Python中threading模块的join函数
2024-09-04 11:54:21
Join的作用是阻塞进程直到线程执行完毕。通用的做法是我们启动一批线程,最后join这些线程结束,例如:
for i in range(10): t = ThreadTest(i) thread_arr.append(t) for i in range(10): thread_arr[i].start() for i in range(10): thread_arr[i].join()
此处join的原理就是依次检验线程池中的线程是否结束,没有结束就阻塞直到线程结束,如果结束则跳转执行下一个线程的join函数。
而py的join函数还有一个特殊的功能就是可以设置超时,如下:
Thread.join([timeout])
Wait until the thread terminates. This blocks the calling thread until the thread whose join() method is called terminates – either normally or through an unhandled exception – or until the optional timeout occurs.
也就是通过传给join一个参数来设置超时,也就是超过指定时间join就不在阻塞进程。而在实际应用测试的时候发现并不是所有的线程在超时时间内都结束的,而是顺序执行检验是否在time_out时间内超时,例如,超时时间设置成2s,前面一个线程在没有完成的情况下,后面线程执行join会从上一个线程结束时间起再设置2s的超时。
最新文章
- Datatable删除行的Delete和Remove方法
- POJ 1679 The Unique MST(次小生成树)
- <;未测>;源码升级安装glibc和rpm升级glibc
- Codeforces Round #324 (Div. 2)解题报告
- Android时间戳转换为标准Datetime(yyyy-MM-dd hh:mm:ss)格式
- 类似百度音乐唱片播放时CD图片不停旋转的实现
- MyEclipse - 解决 MyEclipse build workspace慢,validation javascript更慢的问题
- CentOS_5.6下使用cmake编译MySQL_5.5.11教程
- html网页中加载js脚本 下载下来是乱码(文件编码格式)
- 结对开发项目--石家庄地铁web版
- 【同余方程组】POJ1006 生理周期
- BZOJ4970 : [ioi2004]empodia 障碍段
- 和我一起学Effective Java之类和接口
- 10.10xadmin
- 设计模式之模板方法模式:实现可扩展性设计(Java示例)
- Ajax复习
- css选择器补充
- 无法将 lambda 表达式 转换为类型“System.Delegate”,因为它不是委托类型
- yii2缓存
- WPF 控件被禁用,悬浮提示不显示问题