如何在一些线程之间共享全局数据?

2024-06-07 08:08:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python(2.7)程序,它可以生成100个线程。每批100个线程必须有自己的全局锁和全局字符串。我正在对threading.Thread模块进行子类化。我认为对于全局锁,我可以通过每个线程的构造函数传递它。但是,我不确定是否有全局字符串。如果我将一个字符串传递给每个线程的构造函数,那么每个线程都有自己的字符串实例

我希望每批100个线程的全局变量都像类变量一样工作

class Test(threading.Thread):
    def __init__(self, someString, lock):
        super(Test, self).__init__()
        self._someString = someString
        self._LOCK = lock

    def run(self):
        # How would I change self._someString for all 100 threads in this particular batch?

lock1 = threading.Lock()
for _ in xrange(100): Test('x1', lock1).start()

lock2 = threading.Lock()
for _ in xrange(100): Test('x2', lock2).start()

我试着在字典里输入字符串:

lock1 = threading.Lock()
str1 = {'str':'some string'}
for _ in xrange(100): Test(str1, lock1).start()

但这似乎也不管用。它仍然只是为那个特定的线程修改了字典


Tags: 字符串intestselflockfordef全局

热门问题