多线程 事件event

本文介绍了Python多线程中Event对象的使用,Event作为线程间通信的工具,用于解决线程状态判断的同步问题。Event对象包含一个可设置的信号标志,初始为False。线程可以通过wait()方法等待标志变为True,set()方法用于设置标志为True唤醒等待线程,clear()方法则将标志设回False,is_set()用于检查标志状态。
摘要由CSDN通过智能技术生成

事件Event 线程的一个关键特性是每个线程都是独立运行且状态不可预测。如果程序中的其 他线程需要通过判断某个线程的状 态来确定自己下一步的操作,这时线程同步问题就会变得非常棘手。为了解决这些问题,我们需要使用threading库中 的Event对象。 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。在 初始情况下,Event对象 中的信号标志被设置为假。如果有线程等待一个Event对象, 而这个Event对象的标志为假,那么这个线程将会被一直 阻塞直至该标志为真。一个线程如果将一个Event对象的信号标志设置为真,它将唤醒所有等待这个Event对象的线 程。如果一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件, 继续执行

Event()可以创建一个事件管理标志,该标志(event)默认为False,event 对象主要有四种方法可以调用:

1.event.wait(timeout=None):调用该方法的线程会被阻塞,如果设置了timeout 参数,超时后,线程会停止阻塞继 续执行;

2.event.set():将event 的标志设置为True,调用wait 方法的所有线程将被唤醒;

3.event.clear():将event 的标志设置为False,调用wait 方法的所有线程将被阻塞;

4.event.is_set():判断event 的标志是否为True。

#线程1,门,一开始是打开的 每3秒需要自动关闭一次 如果有人通过需要重新刷卡打开
#线程2,人,人通过门,如果门是打开的则直接通过,如果没有打开需要刷卡 之后门就打开了 之后通知人继续进入

import threading
import time
import random #随
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值