我有多个类(使用线程同时运行)。他们都需要访问一个字典/对象(包含数据库中的配置值,以及对所有其他对象的引用,以便能够在两个线程之间调用方法)
实施此方法的最佳方法是什么? 我应该创建一个保存并获取数据的模块吗? 全局变量?
我对Python很陌生,我觉得我接近这个错误的方式
编辑(小示例脚本)
#!/usr/local/bin/python3.3
class foo(threading.Thread):
def run(self):
# access config from here
y = bar(name='test').start()
while True:
pass
def test(self):
print('hello world')
class bar(threading.Thread):
def run(self):
# access config from here
# access x.test() from here
if __name__ == '__main__':
x = foo(name='Main').start()
答案 0 :(得分:1)
如果您的程序足够大,拥有大量全局数据,那么创建一个模块并将所有全局数据放在那里是个不错的主意。从其他模块导入此模块并使用它。如果程序很小,那么全局变量可能更合适。我假设这将是一个只读结构,否则事情变得复杂。以下是第一种情况的示例(假设Config
是文件global_mod.py
中的类):
from global_mod import Config
class foo(threading.Thread):
def run(self):
# do something with cfg
y = bar(name='test').start()
while True:
pass
def test(self):
print('hello world')
class bar(threading.Thread):
def run(self):
# do something with cfg
# access x.test() from here
if __name__ == '__main__':
cfg = Config()
x = foo(name='Main').start()