Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过队列唤醒线程_Python_Multithreading - Fatal编程技术网

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节(几乎在底部)介绍了条件对象。

如果所讨论的队列对象绑定到name
q
,只需调用
q.get()
:只要队列是空的,它就会耐心地休眠,然后当另一个线程执行
put(无论什么)使队列变为非空时,它就会返回队列的第一项
在上面。虽然对此可能并不十分清楚,但这是
.get()
的默认行为,当您在没有任何参数的情况下调用它时,这确实是线程从队列中读取数据的最常用方式(这就是为什么它首先被设为默认值;-)。

在应该睡眠的线程中,调用
get(block=True)
您的
队列
对象的方法。然后,该方法将不会返回,直到它成功地将对象从队列中取出。这是
queue.get()的默认行为。