1

我有两个线程,两个线程都进行一组计算并获得结果。问题在于,线程的计算在某一点上都需要在另一点上获得的结果。我想到了继承,但只能将值从一个线程传递到另一个线程。如何在不使用全局变量的情况下在两个线程之间传递值?

我想做这样的事情。

class first(threading.Thread):
    def __init__(self, flag, second):
    ##rest of the class first##

class second(threading.Thread):
    def __init__(self, flag, first):
    ##rest of the class second##

def main():
    flag=threading.Condition()
    First=first(flag,Second)
    First.start()
    Second=second(flag,First)
    Second.start()

执行上述操作时出现错误。

4

1 回答 1

3

您可以使用Queue 模块:给每个线程一个Queue.Queue对象。然后每个线程都可以进行计算,将结果放入另一个线程的队列中,然后在自己的队列上监听,直到另一个线程的结果到达。

确保先发布结果,然后等待另一个线程的结果,否则您的线程将最终死锁。

于 2012-08-28T13:50:45.230 回答