并发编程-进~线程-05event事件

时间:2019-09-21
本文章向大家介绍并发编程-进~线程-05event事件,主要包括并发编程-进~线程-05event事件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一丶什么是event事件

通过判断某个线程的状态来确定自己下一步的操作

​ 如果有线程等待一个Event对象, 而这个Event对象的标志为假,那么这个线程将会被一直阻塞直至该标志为真。一个线程如果将一个Event对象的信号标志设置为真,它将唤醒所有等待这个Event对象的线程。如果一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件, 继续执行

二丶event事件方法

  1. event.isSet():返回event的状态值;

  2. event.wait():如果 event.isSet()==False将阻塞线程;

  3. event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;

  4. event.clear():恢复event的状态值为False。

三丶event事件的代码

from threading import Event,Thread
import time

# 先生成一个event对象
e = Event()


def light():
    print('红灯正亮着')
    time.sleep(3)
    e.set()  # 发信号
    print(e.isSet())
    # e.clear()
    # print(e.isSet())
    print('绿灯亮了')
    # print(e.set())

def car(name):
    print('%s正在等红灯'%name)
    e.wait()  # 等待信号
    # print(e.isSet())
    e.clear()
    print(e.isSet())
    print('%s加油门飙车了'%name)


t = Thread(target=light)
t.start()

for i in range(10):
    t = Thread(target=car,args=('伞兵%s'%i,))
    t.start()

原文地址:https://www.cnblogs.com/suren-apan/p/11561969.html