python多进程的join方法

查阅很多资料后,终于明白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:\Users\my\Desktop\python_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:\Users\my\Desktop\python_file>python 23.py
wtite...
wtite...
wtite...
[<Process(Process-1, stopped)>, <Process(Process-2, started)>]
0
1
read...
read...
read...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值