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