2011-07-20 23 views
1

对于单个线程,我会做如何等待线程列表完成? (蟒蛇)

thread.join(60) 
threadEvent.set() 

我怎样才能使它等待所有线程列表完成或等待超时,然后发出set()的线程。事件()?每个线程都有一个相应的threading.Event(),用于停止线程。重要的部分是,如果达到超时,我需要为每个线程设置事件。

+0

保留一个线程列表及其相应的事件? –

+0

像http://stackoverflow.com/questions/887346/synchronising-multiple-threads-in-python? – kennytm

+0

基本上,如果一旦完成就不加入线程,那么无关紧要 - 因此,您可以等待其中一个线程,然后再等待其余的整个超时时间超时。 –

回答

3
import time 
endTime = time.time() + 60 
for t in threads: 
    t.join(endTime - time.time()) 
    t.event.set() 
+0

可能会对事件进行循环?由于每个线程都有自己的事件? –

+0

@Douglas Leeder哎呀,忽略了。移动循环中的事件设置。 – phihag

+0

我不确定什么加入()与负超时做。也许这会很糟糕? –