Python 通过队列唤醒线程
我希望我的线程在队列为空时休眠,只有在数据放入队列时才唤醒。Python 通过队列唤醒线程,python,multithreading,Python,Multithreading,我希望我的线程在队列为空时休眠,只有在数据放入队列时才唤醒。 我应该使用条件对象吗?我以前从未使用过这个对象,在python中找不到一个简单的示例。Passblock=Trueto。网上有一篇很好的Linux Gazette文章,其中的代码使用了一个条件变量,您可能会发现它很有用:。本文概括介绍了python线程。第4.4节(几乎在底部)介绍了条件对象。如果所讨论的队列对象绑定到nameq,只需调用q.get():只要队列是空的,它就会耐心地休眠,然后当另一个线程执行put(无论什么)使队列变为
我应该使用条件对象吗?我以前从未使用过这个对象,在python中找不到一个简单的示例。Pass
block=True
to。网上有一篇很好的Linux Gazette文章,其中的代码使用了一个条件变量,您可能会发现它很有用:。本文概括介绍了python线程。第4.4节(几乎在底部)介绍了条件对象。如果所讨论的队列对象绑定到nameq
,只需调用q.get()
:只要队列是空的,它就会耐心地休眠,然后当另一个线程执行put(无论什么)使队列变为非空时,它就会返回队列的第一项
在上面。虽然对此可能并不十分清楚,但这是.get()
的默认行为,当您在没有任何参数的情况下调用它时,这确实是线程从队列中读取数据的最常用方式(这就是为什么它首先被设为默认值;-)。在应该睡眠的线程中,调用get(block=True)
您的队列
对象的方法。然后,该方法将不会返回,直到它成功地将对象从队列中取出。这是queue.get()的默认行为。