30.Python 线程事件Event

最后更新于:2020-03-21 11:54:26

在python项目开发中,线程thread使用是比较常见的,在前面的文章中我们介绍了 python线程的创建  以及 线程互斥锁 ,今天还要额外介绍一个与线程相关的内容 – 事件Event

 

一.python事件Event相关函数介绍

set() — 全局内置标志Flag,将标志Flag 设置为 True,通知在等待状态(wait)的线程恢复运行;

isSet() — 获取标志Flag当前状态,返回True 或者 False;

wait() — 一旦调用,线程将会处于阻塞状态,直到等待其他线程调用set()函数恢复运行;

clear() — 将标志设置为False;

 

二.python事件Event原理

事件event中有一个全局内置标志Flag,值为 True 或者False。使用wait()函数的线程会处于阻塞状态,此时Flag指为False,直到有其他线程调用set()函数让全局标志Flag置为True,其阻塞的线程立刻恢复运行,还可以用isSet()函数检查当前的Flag状态.

 

抠鼻子

 

三.python事件Event使用

假如有这样一个场景:有10个单身狗,对面100米有10个美女,同时起跑,一人一个,自由选择,先到先得…..

输出结果:

bug

 

四.重点总结

注意互斥锁Lock与事件Event区别,需求不同,使用方式也不同:

互斥锁Lock主要针对多个线程同时操作同一个数据,使用互斥锁可以保证数据正常修改或者访问;

事件Event主要用于唤醒正在阻塞等待状态的线程;

 

 

猜你喜欢:

1.python线程创建和参数传递

2.python互斥锁Lock

3.python列表推导式

4.python字典推导式

 

转载请注明猿说Python » python 事件Event

 

技术交流、商务合作请直接联系博主
扫码或搜索:猿说python
python教程公众号
猿说python
微信公众号 扫一扫关注