在两个线程之间传递值

时间:2012-08-28 13:41:49

标签: python multithreading inheritance

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

我想做这样的事情。

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

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

1 个答案:

答案 0 :(得分:3)

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

确保先发布结果,然后等待其他线程的结果,否则你的线程最终会死锁。