2022-06-23 Python 全局变量管理模块

Python 多文件间传递全局变量参数

起因

在工程中遇到需要退出子线程

t = threading.Thread(target=xx, name='xx')
t.start()

于是在线程中加入标志位来判定是否继续运行,由于单个全局变量仅能作用于单个文件,即使被import之后也无法实现双向读写,于是从网上看来思路,引入独立变量文件来管理增删改查

P1

global_var.py

# -*- coding: utf-8 -*-

def _init():  # 初始化
    global _global_dict
    _global_dict = {}


def set_value(key, value):
    # 定义一个全局变量
    _global_dict[key] = value


def get_value(key, def_value=None):
    # 获得一个全局变量,不存在则提示读取对应变量失败
    try:
        return _global_dict[key]
    except KeyError:
        return def_value
t3.py
import global_var
import time

def t3():
    global_var._init()
    while True:
        global_var.set_value('ttt5', time.time())
t4.py
mport global_var
import t3
import threading

t = threading.Thread(target=t3.t3)
t.daemon = True
t.start()
while True:
    print('t4 start')
    print(global_var.get_value('ttt5'))
    input('t4 wait')

P2

之前的用到项目中会读不到数据,不知为啥,换成了直接写类了


class GlobalVar:
    global_dict = {}


def set_value(key, value):
    # 定义一个全局变量
    GlobalVar.global_dict[key] = value


def get_value(key, def_value=None):
    # 获得一个全局变量,不存在则提示读取对应变量失败
    try:
        return GlobalVar.global_dict[key]
    except KeyError:
        return def_value


def show_all_value():
    # 都吐出来看看
    return GlobalVar.global_dict

你可能感兴趣的:(2022-06-23 Python 全局变量管理模块)