本程序参考链接https://www.cnblogs.com/chengd/articles/7770898.html
在学习查阅别人的代码时,对threading.Event有疑问,认真研究了一下下,故记录下来
以下为个人理解,如有不恰当的地方,欢迎指出来,谢谢
Python threading模块提供Event对象用于线程间通信。用于主线程控制其他线程的执行,事件主要提供了四个方法wait、clear、set、isSet
- set():可设置Event对象内部的信号标志为True
- clear():可清除Event对象内部的信号标志为False
- isSet():Event对象提供了isSet()方法来判断内部的信号标志的状态。当使用set()后,isSet()方法返回True;当使用clear()后,isSet()方法返回False
- wait():该方法只有在内部信号为True的时候才会被执行并完成返回。当内部信号标志为False时,则wait()一直等待到其为True时才返回
通过Event来实现一个红绿灯例子,
即启动一个线程做交通指挥灯,生成几个线程做汽车,汽车行驶按照红灯停绿灯行的规则
1 #cherry_cui 2 3 4 import threading, time # 导入所需的模块 5 import random 6 7 8 def light(): # 定义light函数 9 if not event.isSet(): 10 event.set() # 初始化isSet()为True:若isSet为True,不执行set();若isSet为False,执行set() 11 count = 0 12 while True: 13 if count < 10: 14 print('