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说明的主要内容,如果未能解决你的问题,请参考以下文章