类对象之间的共享数据

时间:2013-07-11 20:54:57

标签: python python-3.x

我有多个类(使用线程同时运行)。他们都需要访问一个字典/对象(包含数据库中的配置值,以及对所有其他对象的引用,以便能够在两个线程之间调用方法)

实施此方法的最佳方法是什么? 我应该创建一个保存并获取数据的模块吗? 全局变量?

我对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()

1 个答案:

答案 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()