通过队列唤醒线程

时间:2010-05-16 22:32:19

标签: python multithreading

我希望我的线程在队列为空时休眠,并且只在数据被放入其中时才唤醒。 我应该使用条件对象吗?我之前从未使用过这个对象,我在python中找不到一个简单的例子。

3 个答案:

答案 0 :(得分:2)

如果有问题的队列对象绑定了名称q,只需调用q.get():只要队列为空,它就会耐心地睡觉,然后在队列出现后立即返回队列的第一个项目由另一个执行.put(whatever)的线程使其变为非空。虽然the docs可能不是很清楚这一点,但是当你在没有任何参数的情况下调用它时,.get()默认行为,并且确实是线程读取的最流行的方式从一个队列(这就是为什么它首先成为默认值; - 。)。

答案 1 :(得分:0)

block=True传递给Queue.get()

答案 2 :(得分:0)

网上有一篇很好的Linux Gazette文章,其中包含使用您可能会觉得有用的条件变量的代码:http://linuxgazette.net/107/pai.html。本文一般介绍了python线程。第4.4节几乎在底部,涵盖条件对象。