美文网首页
Python threading 中join()的作用

Python threading 中join()的作用

作者: 周周周__ | 来源:发表于2019-07-22 17:18 被阅读0次
# coding: utf-8
import threading, time
tmp_list = []
time1 = time.time()
def myfunc(m):
    time.sleep(m)
    tmp_list.append(m)
    # time3 = time.time()
    # print(time3 - time1)
def mu():
    print(tmp_list)
thread_list = []

t1 = threading.Thread(target=myfunc, args=[1])
t1.start()
for i in range(5):
    t2 = threading.Thread(target=myfunc, args=[2])
    t2.start()

t1 = threading.Thread(target=mu)
t1.start()
# t1.join()
# t2.join()
time2 = time.time()
print(time2-time1)
print(tmp_list)

Python中join()的作用:(菜鸟网络)join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生
看着定义大致明白,但是自己确不好理解。主要的功能就是多线程的线程独占,让此时只有一个线程运行。

问题:

1.子线程为什么需要join?
join阻塞主线程,可以让主线程获得子线程的处理结果。
如果没有join,由于子线程sleep,尚未append到tmp_list,例子中print tmp_list为空列表,join后即能在append执行后print出来。
如果不需要子线程的处理结果,那么可以不join,当然join了也没啥影响。
2.为什么要写成for循环join的形式?
这个在上文方式二中即提出了,可以即让子线程异步执行,又让主线程等待结果。

其实很简单,上边的代码执行了就大致明白了

相关文章

网友评论

      本文标题:Python threading 中join()的作用

      本文链接:https://www.haomeiwen.com/subject/wxrilctx.html