Python 线程事件 Event - Python零基础入门教程

目录

  • 一.Python 线程事件 Event 函数介绍
  • 二.Python 线程事件 Event 原理
  • 三.Python 线程事件 Event 使用
  • 四.重点总结
  • 五.猜你喜欢

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

在 Python 项目开发中,线程 thread 使用是比较常见的,在前面的文章中我们介绍了 Python 线程的创建 以及 线程互斥锁 Lock ,今天还要额外介绍一个与线程相关的内容 –事件 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 个美女,同时起跑,一人一个,自由选择,先到先得……

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 线程事件 Event.py
@Time:2021/05/04 07:37
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""# 导入线程模块
import threading# 创建event事件
eEvent = threading.Event()def get_girl_friend(id):print("单身狗{}都准备完毕,内置Flag状态:{}.....".format(id,eEvent.isSet()))eEvent.wait()print("单身狗%d告别单身....."%id)if __name__ == "__main__":thread_list = list()for i in range(1,11):# 创建并初始化线程t = threading.Thread(target=get_girl_friend,args=(i,))# 启动线程t.start()# 将线程句柄添加list列表中thread_list.append(t)# 所有线程准备完毕,将event内置Flag设置为True,恢复正在阻塞的线程eEvent.set()# 遍历列表,阻塞主线程for t in thread_list:# 阻塞主线程,等待所有子线程结束t.join()print("程序结束!")'''
输出结果:单身狗1都准备完毕,内置Flag状态:False.....
单身狗2都准备完毕,内置Flag状态:False.....
单身狗3都准备完毕,内置Flag状态:False.....
单身狗4都准备完毕,内置Flag状态:False.....
单身狗5都准备完毕,内置Flag状态:False.....
单身狗6都准备完毕,内置Flag状态:False.....
单身狗7都准备完毕,内置Flag状态:False.....
单身狗8都准备完毕,内置Flag状态:False.....
单身狗9都准备完毕,内置Flag状态:False.....
单身狗10都准备完毕,内置Flag状态:False.....
单身狗5告别单身,内置Flag状态:True.....
单身狗6告别单身,内置Flag状态:True.....
单身狗7告别单身,内置Flag状态:True.....
单身狗1告别单身,内置Flag状态:True.....
单身狗8告别单身,内置Flag状态:True.....
单身狗10告别单身,内置Flag状态:True.....
单身狗4告别单身,内置Flag状态:True.....
单身狗9告别单身,内置Flag状态:True.....
单身狗3告别单身,内置Flag状态:True.....
单身狗2告别单身,内置Flag状态:True.....
程序结束!
'''

四.重点总结

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

  • 互斥锁 Lock 主要针对多个线程同时操作同一个数据,使用互斥锁可以保证数据正常修改或者访问;
  • 事件 Event 主要用于唤醒正在阻塞等待状态的线程;

五.猜你喜欢

  1. Python 条件推导式
  2. Python 列表推导式
  3. Python 字典推导式
  4. Python 函数声明和调用
  5. Python 不定长参数 *argc/**kargcs
  6. Python 匿名函数 lambda
  7. Python return 逻辑判断表达式
  8. Python 字符串/列表/元组/字典之间的相互转换
  9. Python 局部变量和全局变量
  10. Python type 函数和 isinstance 函数区别
  11. Python is 和 == 区别
  12. Python 可变数据类型和不可变数据类型
  13. Python 浅拷贝和深拷贝
  14. Python 文件读写操作
  15. Python 异常处理
  16. Python 模块 import
  17. Python __name__ == ‘__main__’详细解释

未经允许不得转载:猿说编程 » Python 线程事件 Event

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BugkuCTF-WEB题计算器

将maxlength1改为maxlength长度改大即可

北京房租大涨?6个维度,数万条数据帮你揭穿(附详情代码)

作者|丁彦军来源|恋习Python昨天还幻想海边别墅的年轻人,今天可能开始对房租绝望了。8月初,有网友在“水木论坛”发帖控诉长租公寓加价抢房引起关注。据说,一名业主打算出租自己位于天通苑的三居室,预期租金7500元/月,…

Python 线程条件变量 Condition - Python零基础入门教程

目录 一.Python 线程条件变量 Condition 函数二.Python 线程条件变量 Condition 原理三.Python 线程条件变量 Condition 使用四.Python 线程条件变量 Condition 总结五.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 对于线程与线程之间的…

BugkuCTF-WEB题eval

基础知识: var_dump() 函数用于输出变量的相关信息。 var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。 此题考察php相关 include是将flag.php文件包含进页面代码 $request…

Cloud一分钟 | 微软Azure云服务宣布又一重磅应用落地;微软云计算转型迅猛,或助其市值短期达到1万亿美元...

Hello,everyone:10月26日早,星期五,祝大家工作愉快!一分钟新闻时间:完1.微信群:添加小编微信:tangguoyemeng,备注“进群姓名公司职位”即可,加入【云计算学习…

Python 线程定时器 Timer - Python零基础入门教程

目录 一.Python 线程定时器 Timer 原理二.Python 线程定时器 Timer 使用三.Python 线程定时器 Timer 总结四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 相对前面几篇 Python 线程内容而言,本片内容相对比较简单&#xff0c…

BugkuCTF-Reverse题Easy_Re多方法解决

下载附件 首先打开程序: 方法一: 第一步PEID,发现为cpp文件,32位程序 根据flag格式:DUTCTF{} 扔进IDA里,直接在16进制编辑器里AltT搜索CTF字符串 Flag:DUTCTF{We1c0met0DUTCTF} 或者在010editor里查…

云漫圈 | 我觉得我的手机被监听了。。。

参加 2018 AI开发者大会,请点击 ↑↑↑完1.微信群:添加小编微信:tangguoyemeng,备注“进群姓名公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!2.征稿:投…

BugkuCTF-Reverse题Easy_vb多方法解决

先查壳: 我们可以看到这个是Visual Basic 编写的程序,因此,这个是没有加壳的VB程序。 方法一: MCTF{N3t_Rev_1s_E4ay}改为flag{N3t_Rev_1s_E4ay} 方法二: IDA,F5 方法三: OD打开文件 智能…

Python 线程信号量 semaphore - Python零基础入门教程

目录 一.Python 线程信号量 semaphore 简介二.Python 线程信号量 semaphore 原理三.Python 线程信号量 semaphore 函数介绍四.Python 线程信号量 semaphore 使用五.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python 线程信号量 sem…

【有奖倒计时】带你走进AI应用创新大赛十强背后的故事!

时光如梭,截至今日距离?DigiX极客AI应用创新大赛十强争霸投票阶段只剩最后2天联盟君想问下你领到奖品了吗虽然战场无声无息,形势却如火如荼。13天来,我们感受到了众多花粉的热情,也感受到了用户们对高质量AI作品的喜爱。为投票准…

Python 线程障碍对象 Barrier - Python零基础入门教程

目录 一.Python 线程障碍对象 Barrier 简介二.Python 线程障碍对象 Barrier 原理三.Python 线程障碍对象 Barrier 函数介绍四.Python 线程障碍对象 Barrier 使用 1.案例一:常规使用2.案例二:重置线程障碍数量 reset 五.猜你喜欢 零基础 Python 学习路线…

BugkuCTF-PWN题pwn1-瑞士军刀

注意: nc ip 端口 敲完回车没有回显,直接输入ls命令然后cat 文件即可 得到flag

Cloud一分钟 | 加码云计算!IBM斥340亿美元收购Red Hat

Hello,everyone:10月29日早,星期一,祝大家工作愉快!一分钟新闻时间:完1.微信群:添加小编微信:tangguoyemeng,备注“进群姓名公司职位”即可,加入【云计算学习…

Python 线程队列 Queue – FIFO - Python零基础入门教程

目录 一.Python 线程队列分类二.Python 线程先进先出队列 Queue 简介三.Python 线程先进先出队列 Queue 常用函数四.Python 线程先进先出队列 Queue 使用五.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 之前的文章中讲解很多关于线程间通…

BugkuCTF-WEB题网站被黑

利用御剑扫描后台或者通过dirsearch扫描一下目录看看 得到http://1147.67.246.176:15607/shell.php 打开这个网址 发现需要登录密码 通过Burp添加字典爆破密码为hack 输入得到flag

IBM 收购 RedHat(红帽)!340 亿美元

IBM今天宣布了以高达340亿美元的价格收购Red Hat,这笔交易在开源软件行业和云计算行业势必都会引起地震。Red Hat是将开源软件商业化的先驱之一,其采用的模式是,代码免费提供给其他公司使用,以便重新分发和修改。开源软件已逐渐成…

Python 线程队列 LifoQueue – LIFO - Python零基础入门教程

目录 一.Python 线程队列 Queue 分类二.Python 线程先进后出队列 LifoQueue 简介三.Python 线程先进后出队列 LifoQueue 函数介绍四.Python 线程先进后出队列 LifoQueue 使用五.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 Python 线…

BugkuCTF-WEB题本地管理员

基础知识: base64: 是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一类基于64个可打印字符来表示二进制数据的方法。 XFF伪造请求头: X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的…

你最关心的马蜂窝事件舆论全景图在这里,用文本挖掘一挖到底

原创作者:谭婧,苏格兰折耳喵企业作为社会基本的细胞,在守法盈利的同时,担负着服务消费者、社区、社会等利益相关方的重要责任。互联网企业是互联网时代的宠儿,举手投足备受关注。所谓成也萧何,败也萧何。大…