概述
查阅很多资料后,终于明白join的使用,有一个博主说的好,join的作用是:阻塞当前进程,直到调用join方法的进程结束,才会继续执行当前的进程
以下的例子便可以更加直观的感受join的作用。
(1)
import multiprocessing
import time
def write():
for i in range(3):
print("wtite...")
time.sleep(1)
def read():
for i in range(3):
print("read...")
time.sleep(1)
if __name__=='__main__':
processList=[]
process1=multiprocessing.Process(target=write)
process2=multiprocessing.Process(target=read)
processList.append(process1)
processList.append(process2)
process1.start()
process2.start()
#阻塞主进程,直到调用join方法的那个进程结束,才继续执行当前进程
for i in processList:
i.join()
#以下的代码,需要等到process1和process2完成后才会继续执行
print(processList)
for i in range(2):
print(i)
#cmd下的运行结果
C:UsersmyDesktoppython_file>python 23.py
wtite...
read...
wtite...
read...
wtite...
read...
[<Process(Process-1, stopped)>, <Process(Process-2, stopped)>]
0
1
(2)
import multiprocessing
import time
def write():
for i in range(3):
print("wtite...")
time.sleep(1)
def read():
for i in range(3):
print("read...")
time.sleep(1)
if __name__=='__main__':
processList=[]
process1=multiprocessing.Process(target=write)
process2=multiprocessing.Process(target=read)
processList.append(process1)
processList.append(process2)
process1.start()
"""process1调用join,阻塞了主进程,所有之后的代码
会等process1完成后才会执行"""
process1.join()
"""因为process2没有使用.join方法,所以开启process2后,主进程会继续执行。
因为主进程比process2要快,所以process2没有结束时,主进程便已经结束了"""
process2.start()
#以下的代码,需要等到process1和process2完成后才会继续执行
print(processList)
for i in range(2):
print(i)
#cmd下的运行结果
C:UsersmyDesktoppython_file>python 23.py
wtite...
wtite...
wtite...
[<Process(Process-1, stopped)>, <Process(Process-2, started)>]
0
1
read...
read...
read...
最后
以上就是爱撒娇雨为你收集整理的python多进程的join方法的全部内容,希望文章能够帮你解决python多进程的join方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复