通过队列唤醒线程
我想让我的线程在队列为空的时候休眠,只有在有数据放进队列时才醒过来。 我应该使用条件对象吗?我之前从来没有用过这个对象,也找不到简单的Python示例。
3 个回答
0
网上有一篇很不错的Linux Gazette文章,里面有使用条件变量的代码,可能对你有帮助:http://linuxgazette.net/107/pai.html。这篇文章主要讲的是Python中的线程,第四章第四节,快到最后的地方,讲到了条件对象。
0
在使用 Queue.get()
这个方法的时候,可以加上 block=True
这个参数。
4
如果你有一个队列对象,名字叫 q
,你只需要调用 q.get()
。当队列是空的时候,它会耐心地等待,直到有其他线程往队列里放入东西(通过 .put(whatever)
),然后它会立刻返回队列里的第一个项目。虽然文档可能没有说得特别清楚,但这就是 .get()
的默认行为,当你不传任何参数调用它时。其实,这也是线程从队列中读取数据最常用的方法,这也是为什么它一开始就被设定为默认行为的原因;-)。