python 多进程 multiprocessing.Process 的 join 和 start 方法
multiprocessing模块就是跨平台版本的多进程模块。
multiprocessing模块提供了一个Process类来代表一个进程对象。
-
start() 方法:
start方法是进程启动,这样创建的进程比fork还要快
from multiprocessing import Process
import time
import os
def print_value(data):
"""
打印数据
:param data:
:return:
"""
print("我已经打印:",data)
time.sleep(3)
if __name__=="__main__":
print('Parent process %s.' % os.getpid())
p= Process(target=print_value,args=('222',))
print("Process will start")
p.start()
print("end Process")
运行结果:
Parent process 10924.
Process will start
end Process
我已经打印: 222
Process finished with exit code 0
2.join() 方法:
join()
方法可以等待子进程结束后再继续往下运行(更准确地说,在当前位置阻塞主进程,带执行join()的进程结束后再继续执行主进程),通常用于进程间的同步。(进一步地解释,哪个子进程调用了join方法,主进程就要等该子进程执行完后才能继续向下执行,具体可见下边的分析图)
from multiprocessing import Process
import time
import os
def print_value(data):
"""
打印数据
:param data:
:return:
"""
print("我已经打印:",data)
time.sleep(3)
if __name__=="__main__":
print('Parent process %s.' % os.getpid())
p= Process(target=print_value,args=('222',))
print("Process will start")
p.start()
p.join()
print("end Process")
运行结果:
Parent process 13396.
Process will start
我已经打印: 222
end Process
Process finished with exit code 0