thread.event说明

Posted wanstack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thread.event说明相关的知识,希望对你有一定的参考价值。

Python中的threading.Event()操控多线程的过程有:
- 定义事件:man_talk_event = threading.Event()
- 创建线程,传入对应事件:t1 = threading.Thread(target=man, args=(man_talk_event,), name=‘man‘)
- 查看对应事件的标志:man_talk_event.is_set()返回Ture或False
- 阻塞对应事件线程:man_talk_event.wait() 如果事件标志为True则不阻塞
- 继续对应事件线程:man_talk_event.set() 设置事件标志为True
- 结束对应事件线程:man_talk_event.clear() 设置事件标志为False
- 注意创建线程的时候,如果之前设置成t1.setDaemon(True),则不会阻塞主线程

 

threading.Event机制类似于一个线程向其它多个线程发号施令的模式,其它线程都会持有一个threading.Event的对象,这些线程都会等待这个事件的“发生”,如果此事件一直不发生,那么这些线程将会阻塞,直至事件的“发生”。

 

对此,我们可以考虑一种应用场景(仅仅作为说明),例如,我们有多个线程从rabbitmq队列中读取数据来处理,这些线程都要尝试去连接rabbitmq的服务,一般情况下,如果Redis连接不成功,在各个线程的代码中,都会去尝试重新连接。如果我们想要在启动时确保rabbitmq服务正常,才让那些工作线程去连接Redis服务器,那么我们就可以采用threading.Event机制来协调各个工作线程的连接操作:主线程中会去尝试连接rabbitmq服务,如果正常的话,触发事件,各工作线程会尝试连接rabbitmq服务。

 

以上是关于thread.event说明的主要内容,如果未能解决你的问题,请参考以下文章

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章

gitlab 权限说明

Sleep() 方法后的代码片段没有被执行

对 Android 文档的说明:片段

Shader HLSL片段说明

几个非常实用的JQuery代码片段