当前位置: 首页 > news >正文

易申建设网站兼职做ps网站

易申建设网站,兼职做ps网站,东莞网站开发方案,哪个网站可以做行程攻略Event 事件 笔记 1. 基本概念 threading.Event 是 Python 线程同步的基础组件,本质是一个布尔标志位,提供跨线程的事件通知机制。 2. 核心方法 方法作用描述set()设置事件为 True,唤醒所有等待线程clear()重置事件为 Falsewait(timeoutNo…

Event 事件 笔记

1. 基本概念

threading.Event 是 Python 线程同步的基础组件,本质是一个布尔标志位,提供跨线程的事件通知机制。

2. 核心方法

方法作用描述
set()设置事件为 True,唤醒所有等待线程
clear()重置事件为 False
wait(timeout=None)阻塞直到事件被设置或超时(返回是否等到事件)
is_set()返回当前事件状态

3. 注意事项

  1. 避免死锁:确保至少有一个线程会调用 set(),否则 wait() 会永久阻塞
  2. 超时机制:建议使用 wait(timeout=5) 防止意外阻塞
python event.wait(timeout=5.0)
  1. 状态管理:set() 后状态保持,除非 clear()

如需要更复杂的线程协调时,建议结合 threading.Condition 使用。

4. 演示

下面使用一个短跑比赛简单案例来演示一下,如何使用

from threading import Thread,Event
from queue import Queue
class Runner(Thread):# 初始化对象def __init__(self, event, name,queue):super().__init__()self.event = eventself.name = nameself.queue = queuedef run(self):# 获取当前线程的名称print(f"运动员:{self.name},准备好了", )# 等待事件self.event.wait()# 结束,将名次放入队列self.queue.put(self.name)print(f"运动员:{self.name} 到达终点")if __name__ == '__main__':# 创建一个事件event = Event()# 运动员名单列表runnerName = ["张三","李四","王五","赵六","孙七"]# 创建一个队列,用于记录名次queue = Queue(5)# 记录线程列表threadList = []#判断状态,如果为True,则设置为Falseif event.isSet():event.clear()# 创建运动员线程[threadList.append(Runner(event,name,queue)) for name in runnerName]# 启动线程[t.start() for t in threadList]# 接受指令while True:# 接受裁判指令key = input("输入跑指令: ")if key == "跑":# 设置事件,唤醒所有等待的运动员线程event.set()breakelse:print("指令不对,请重新下发")# 判断队列是否满,也就是运动员是否全部到达终点while  not queue.full():pass# 公布名次number = 1# 因为队列是先进先出,所以从队首依次取值,就是运动名次while not queue.empty():print(f"运动员:{queue.get()},排名第{number}名")number += 1

输出:

运动员:张三,准备好了
运动员:李四,准备好了
运动员:王五,准备好了
运动员:赵六,准备好了
运动员:孙七,准备好了
输入跑指令: 跑
运动员:张三 到达终点
运动员:王五 到达终点
运动员:赵六 到达终点
运动员:李四 到达终点
运动员:孙七 到达终点
运动员:张三,排名第1名
运动员:王五,排名第2名
运动员:赵六,排名第3名
运动员:李四,排名第4名
运动员:孙七,排名第5名
http://www.dtcms.com/a/503238.html

相关文章:

  • 力扣(LeetCode) ——11.盛水最多的容器(C++)
  • word插入页码?【图文详解】word怎么插入页码?word页码设置?
  • Leetcode 3719. Longest Balanced Subarray I
  • Rust unsafe
  • 辽宁省建设工程造价管理协会网站wordpress登陆按钮
  • 【pulldown-cmark】 初学者指南
  • [嵌入式系统-140]:Android以及其衍射版本都是基于Linux,Ubuntu、Rehat也都是基于Linux,异同进行比较。
  • GitLab 代码基础操作清单
  • 深度学习经典分类(算法分析与案例)
  • 做网站的叫什么百度seo引流怎么做
  • js,后端,css记录
  • 云服务器部署Python后端偶遇`ImportError`: 从依赖版本到Python升级的排错全攻略
  • 使用AI编程工具的“经济学”:成本控制与性能优化策略
  • 免费网站收录运营一个app大概多少钱
  • void编辑器+mcpsever本地demo部署
  • 企业做网站设计页面图片
  • S7500 连续波可调谐激光器的控制
  • Blossom插件的使用
  • 做网站知识点做家教网站挣钱吗
  • AWS云基础设施可观测性完整指南
  • MySQL 常用函数实操指南:从基础到实战案例
  • FastAPI(一)——路径操作
  • 达梦数据库备份与恢复:dexp 和 dimp 工具的使用与优化
  • 众划算网站开发网站建设与管理教案怎么写
  • Agent 开发设计模式(Agentic Design Patterns )第 7 章:多智能体协作(Multi-Agent Collaboration)
  • LangGraph React智能体 - 推理与行动的完美结合
  • `tanslate=“no“`避免使用 HTML 中的翻译属性自动翻译品牌名称等
  • 深圳led网站建设最好的手表网站
  • Oracle 常见的33个等待事件
  • 比特位计数(二)