一、Process(target=函数名,args=(),name,kwargs)
target:加进程调用的函数名,一般不加括号
name:进程的名字
kwargs:字典参数
args:元组参数,如果参数就一个,记得加逗号’,’
Python多线程与多进程中join()方法的效果是相同的
join所完成的工作就是线程同步,即主线程任务结束之后,进入阻塞状态,一直等待其他的子线程执行结束之后,主线程再终止
import threading
import time
Python中join()的作用:(菜鸟网络) join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生
看着定义大致明白,但是自己确不好理解。主要的功能就是多线程的线程独占,让此时只有一个线程运行。
1.子线程为什么需要join?
join阻塞主线程,可以让主线程获得子线程的处理结果。
如果没有join,由于子线程sleep,尚未append到tmp_list,例子中print tmp_list为空列表,join后即能在append执行后print出来。
如果不需要子线程的处理结果,那么可以不join,当然join了也没啥影响。
2.为什么要写成for循环join的形式?
这个在上文方式二中即提出了,可以即让子线程异步执行,又让主线程等待结果。
就是把一个list中所有的串按照你定义的分隔符连接起来,比如:list = ['a','b','c']
sep = '|'
join(list,sep)的结果就是a|b|c