没有合适的资源?快使用搜索试试~ 我知道了~
浅谈Python中threading join和setDaemon用法及区别说明
0 下载量 98 浏览量
2020-12-20
08:46:44
上传
评论
收藏 55KB PDF 举报
温馨提示
试读
2页
Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别。 1、join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法。 原型:join([timeout]) 里面的参数时可选的,代表线程运行的最大时间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主线程或函数都会接着执行的。 例子: import threading import time class MyTh
资源详情
资源评论
资源推荐
浅谈浅谈Python中中threading join和和setDaemon用法及区别说明用法及区别说明
Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别。
1、join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子
线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法。
原型:原型:join([timeout])
里面的参数时可选的,代表线程运行的最大时间,即如果超过这个时间,不管这个此线程有没有执行完毕都会被回收,然后主
线程或函数都会接着执行的。
例子:
import threading
import time
class MyThread(threading.Thread):
def __init__(self,id):
threading.Thread.__init__(self)
self.id = id
def run(self):
x = 0
time.sleep(10)
print self.id
if __name__ == "__main__":
t1=MyThread(999)
t1.start()
for i in range(5):
print I
执行后的结果是:
0
1
2
3
4
999
机器上运行时,4和999之间,有明显的停顿。
解释:
线程t1 start后,主线程并没有等线程t1运行结束后再执行,而是先把5次循环打印执行完毕(打印到4),然后sleep(10)
后,线程t1把传进去的999才打印出来。
现在,我们把join()方法加进去(其他代码不变),看看有什么不一样,例子:
import threading
import time
class MyThread(threading.Thread):
def __init__(self,id):
threading.Thread.__init__(self)
self.id = id
def run(self):
x = 0
time.sleep(10)
print self.id
if __name__ == "__main__":
t1=MyThread(999)
t1.start()
t1.join()
for i in range(5):
print I
执行后的结果是:
999
0
weixin_38522253
- 粉丝: 2
- 资源: 879
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0