学习笔记(30):Python网络编程并发编程-Event事件
立即学习:https://edu.csdn.net/course/play/24458/296447?utm_source=blogtoedu
threading.Event事件
1.概念及功能:主要是完成线程之间的通信,将另一个线程的运行状态通知给另一个线程
2.使用场景:
1)客户端运行时等待服务器启动连接,若等待时间过长或者尝试连接次数过多,提示连接失败。只有等服务器启动事件成功后,才会进行连接事件
3.Event的相关属性
1)Event.wait():表示等待,括号里面可以加上特定的等待时间
2)Event.set():给等待发送一个信号,等待着的线程就会继续运行
3)clear:Event默认是False,当被set后为Ture,clear可以使得其重新设置为False
4)is_set():判断事件是否已经被set
4.代码
from threading import Thread,Event,currentThread
import time#创建事件对象
event = Event()
#创建客户端函数模拟客户端连接
def client():n = 0#设置等待取消的条件函数,如果尝试连接的次数超过5次,则退出等待,因为event.wait的时间是0.5,最多等5次,需要2.5秒,而在server中沉睡了5秒,因此会等不到event.set()的执行就退出等待while not event.is_set():if n == 5:print('%s is failed to connect the server')returnn += 1#这里需要注意return和break的区别,break只是跳出循环,而return是跳出函数,如果用break会使得返回连接成功的信息print('%s is trying to connect......'%currentThread().getName())print('*'*20,'%s第%s次尝试连接'%(currentThread().getName(),n),'*'*20)event.wait(0.5)#等待事件的发生,等待set#print('%s is connected'%currentThread().getName())#创建服务端函数模拟服务器
def server():print("%s is trying to start"%currentThread().getName())time.sleep(3)event.set()if __name__ == '__main__':for i in range(3):c = Thread(target=client)c.start()s = Thread(target=server)s.start()
学习笔记(30):Python网络编程并发编程-Event事件相关推荐
- 学习笔记(19):Python网络编程并发编程-互斥锁
立即学习:https://edu.csdn.net/course/play/24458/296430?utm_source=blogtoedu 1.互斥锁: 多进程间的内存是相互隔离的,因此其数据也是 ...
- 学习笔记(34):Python网络编程并发编程-异步调用与回调机制
立即学习:https://edu.csdn.net/course/play/24458/296452?utm_source=blogtoedu 1.知识点:(详细见代码注释) 1)同步调用: res1 ...
- 学习笔记(33):Python网络编程并发编程-进程池线程池
立即学习:https://edu.csdn.net/course/play/24458/296451?utm_source=blogtoedu 进程池与线程池: 一般应用在网站上,进程池或线程池最大的 ...
- 学习笔记(28):Python网络编程并发编程-死锁与递归锁
立即学习:https://edu.csdn.net/course/play/24458/296445?utm_source=blogtoedu 1.死锁(Lock()的局限性) 知识点:Lock()只 ...
- 学习笔记(18):Python网络编程并发编程-守护进程
立即学习:https://edu.csdn.net/course/play/24458/296429?utm_source=blogtoedu 守护进程(了解) 1.概念:守护进程是主进程在创建子进程 ...
- 学习笔记(09):Python网络编程并发编程-模拟ssh远程执行命令-代码实现
立即学习:https://edu.csdn.net/course/play/24458/296239?utm_source=blogtoedu 1.服务器端:接收客户端发送的命令,subprocess ...
- 学习笔记(08):Python网络编程并发编程-实现服务端可以对多个客户端提供服务
立即学习:https://edu.csdn.net/course/play/24458/296237?utm_source=blogtoedu 链接循环,一个服务器服务多个客户端, 思路1:服务器一个 ...
- Python网络与并发编程 10 threading模块线程锁
前言 本章节将继续围绕threading模块讲解,基本上是纯理论偏多. 对于日常开发者来讲很少会使用到本章节的内容,但是对框架作者等是必备知识,同时也是高频的面试常见问题. 官方文档 线程安全 线程安 ...
- python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...
最新文章
- Linux内核探讨-- 第七章
- NGINX Plus 提供的在线活动监控功能
- oracle 用函数返回对象集合
- nslang oracle_解决ojdbc14连接oracle报“java.sql.SQLException: Io 异常: Size Data Unit (SDU) mismatch”异常问题...
- C++语法细节注意集锦
- leetcode22. 括号生成
- Kinect for Windows SDK开发初体验(二)操作Camera
- 如何安装 Microsoft Office 兼容包,以便您可以在早期版本的 Microsoft Office 中打开和保存 Office Open XML 格式...
- GIS(地理信息系统)名词解释大全(考研)
- Linux 下安装和配置 MinDoc
- 周杰伦新专辑预售热点传播渠道分析
- 热爱可抵岁月漫长,温柔可挡艰难时光—2020年终总结
- Java小游戏学习笔记
- 经济危机下的国际名牌
- 在线图片批量压缩工具
- 闭关修炼30天,“啃透”这658页PDF,成功定级阿里P7
- PMPBOK6之项目管理的33个文件
- 北师大听讲座-李玫瑾教授-犯罪心理实案点评
- 分享:SET“红绳”悬吊运动训练的基本概念
- 北京工业大学计算机科学与技术考研真题,北京工业大学计算机科学与技术2022考研经验...
热门文章
- initWithNibName与viewDidLoad的执行关系以及顺序
- jquery实战--定宽
- 文件 图片 上传 及少许正则校验
- 错误: 找不到或无法加载主类 com.leyou.LeyouItemApplication Process finished with exit code 1...
- leetcode-114. Flatten Binary Tree to Linked List
- 从客户端(CourseIssueContent=P财务审计师岗位认证招生简章BR...)中检测到有潜在危险的 Request.Form 值。...
- jprofiler_windows-x64_9_1注册码
- Android Download Manager用法大全
- 对象关系映射(ORM)及代码生成器和插件C#源码(DBFrameworkV4.5.3)
- 看完这篇文章保你面试稳操胜券——基础篇(html/css)