python伪多线程_python3对多线程处理

importthreadingimporttimedefT1_job():print('T1 start')for i in range(10):print('begin sleep 0.1s')

time.sleep(0.1)print('T1 finish')defT2_job():print('T2 start')print('T2 finish')defmain():print('---main begin----')

t1= threading.Thread(target=T1_job, name='T1')

t2= threading.Thread(target=T2_job, name='T2')

t1.start()

t2.start()print('---main end----')if __name__ == '__main__':

main()

运行结果如下:

---main begin----

---main end----T2 start

T1 start

begin sleep 0.1s

T2 finish

begin sleep 0.1s

begin sleep 0.1s

begin sleep 0.1s

begin sleep 0.1s

begin sleep 0.1s

begin sleep 0.1s

begin sleep 0.1s

begin sleep 0.1s

begin sleep 0.1s

T1 finish

主线程,main 很快就结束了, 子线程 T2先开始,然后 T1开始, T2很快就完成任务了, 然后经过漫长的等待最后也完成任务了. 这是没有用join 的情况. 即使 主线程main 停止了, 两个子线程 并不会直接退出. 而是要把自己各自的任务完成, 才会退出.

不知道T1还是T2先运行,代码里写的是T1开始, 但是打印出Log是T2先开始, 这可能和线程执行的任务多少有关系吧(个人理解),具体原因可能就是多线程造成的.

这里通过join ,可以让线程在这里等着,阻塞在这里,等线程跑完了

join 有一个参数 timeout 意思是等待时间, 如果超过等待的时间, 任务还没有完成那就不等待了,直接继续跑下面的代码.

如果任务 完成的时候, 没有超过等待时间, 那么就正常往下跑.

timeout 是一个float number 单位是秒

看下面的代码测试, 使用join来等待线程:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值