python进程和线程中的join方法

Python015

python进程和线程中的join方法,第1张

python中创建进程的方式

一、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