如何设置它以便线程通信它们已完成任务?

Posted

技术标签:

【中文标题】如何设置它以便线程通信它们已完成任务?【英文标题】:How can I set it up so that threads communicate they're complete with their task? 【发布时间】:2010-10-02 18:21:25 【问题描述】:

从概念上讲,我想完成以下任务,但在理解如何在 Python 中正确编码时遇到了麻烦:

from threading import Thread
for i in range(0,3):
    t = Thread(target=myfunction)
    t.start()

# wait until threads have finished executing
print 'complete!'

【问题讨论】:

【参考方案1】:

将线程添加到列表并join()它们。

from threading import Thread
tlist = []
for i in range(3):
    t = Thread(target=some_function)
    t.start()
    tlist.append(t)

# wait until threads have finished executing
for t in tlist:
    t.join()

print 'complete!'

【讨论】:

请注意,您的所有线程都使用此代码完成,您可能最终会永远阻塞。 @Mykroft:如果任何线程未完成,代码无论如何都会阻塞。【参考方案2】:

我从未使用过 python,但我认为您正在寻找的概念是“信号量”。

谷歌发现了这个:

http://www.python.org/doc/2.5.2/lib/semaphore-objects.html

【讨论】:

以上是关于如何设置它以便线程通信它们已完成任务?的主要内容,如果未能解决你的问题,请参考以下文章

Java 里如何实现线程间通信

面试必问:Java 是如何实现线程间通信的?

等待与唤醒机制(线程之间的通信)

PyQt5中如何与线程通信并等待结果

多线程通信wait/notify

Android 线程间通信