python thread的join与setDeamon
2024-08-30 11:55:55
join
t.start()
t.join()
Wait until the thread terminates.
This blocks the calling thread until the thread whose join() method called terminates -- either normally or through an unhandled or until the optional timeout occurs.
将子线程join之后,主线程会等待这些join的子线程结束之后才结束.
join会阻塞
for tid in range(2):
t = threading.Thread(target=my_counter)
t.start()
t.join()
上面这段代码其实不该算是多线程.从上面引用的原文描述就说过: Wait until the thread terminates.
上面的代码当执行到join的时候,程序就阻塞住了...,它在等待当前这个子线程执行完成之后才开始下一个循环,开始start下一个子线程.这是顺序执行的.
正确使用join的方式
thread_array = {}
for tid in range(2):
t = threading.Thread(target=my_counter)
t.start()
thread_array[tid] = t
for i in range(2):
thread_array[i].join()
要让所有的t.start()
调用之后再去join它们.
setDeamon
setDeamon设置为True之后,主线程退出,主线程的所有子线程都会被迫退出.
setDeamon设置为False之后,主线程退出,主线程的所有子线程依然可以继续运行.
setDeamon必须在线程start之前设置.
有join的情况下,主线程会等待它的子线程完成之后再退出,自然setDeamon设置成True或者False都无关紧要.
最新文章
- xUtils 3.0 post使用详解
- https问答篇
- 24个很赞的 Node.js 免费教程和在线指南
- 关于http协议的理解
- Oralce11 客户端的安装和 PlSql Developer 的配置
- Oracl 动态执行表不可访问,本会话的自动统计被禁止
- 通过xib创建控制器
- 对TextView设置drawable,用setCompoundDrawables方法实现
- bzoj2257 [Jsoi2009]瓶子和燃料 最大公约数
- attr与prop html与text
- 01背包 || BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草 || Luogu P2925 [USACO08DEC]干草出售Hay For Sale
- Ue4管线中的灯光信息
- Delphi编程中动态菜单要点归纳
- I/O 接口及其编址方式
- 图片轮滚形式A
- PAT甲题题解-1073. Scientific Notation (20)-字符串处理
- C# new和初始化
- 2018-2019-1 20189218《Linux内核原理与分析》第四周作业
- 基于MATLAB的中值滤波算法实现
- Eclipse C++,Cygwin 64,gcov,lcov 单体&;覆盖率测试环境搭建笔记