我有两个线程,两个线程都进行一组计算并获得结果。问题在于,线程的计算需要在另一个中获得结果。我想到了继承,但只能将值从一个线程传递到另一个线程。如何在不使用全局变量的情况下在两个线程之间传递值?
我想做这样的事情。
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()
当我执行上述操作时出现错误。
答案 0 :(得分:3)
您可以使用Queue module:为每个线程提供一个Queue.Queue
对象。然后每个线程都可以进行计算,将结果放在另一个线程的队列中,然后监听自己的队列,直到另一个线程的结果到达。
确保先发布结果,然后等待其他线程的结果,否则你的线程最终会死锁。