子进程join()方法的使用

join()方法的使用

join()方法的使用

#coding=utf-8

from multiprocessing import Process
import time

def worker(seconds):
    print('worker start')
    time.sleep(seconds)
    print('worker end')

if __name__=='__main__':
    print('主进程开始执行')

    p=Process(target=worker,args=(4,))
    p.start()
    #希望如下的主进程执行语句在子进程执行完后之后输出

    print('主进程执行完成')

结果:如果不调用p.join()方法:
主进程开始执行
主进程执行完成
worker start
worker end



#coding=utf-8

from multiprocessing import Process
import time

def worker(seconds):
    print('worker start')
    time.sleep(seconds)
    print('worker end')

if __name__=='__main__':
    print('主进程开始执行')

    p=Process(target=worker,args=(4,))
    p.start()
    #希望如下的主进程执行语句在子进程执行完后之后输出
    #子进程对象调用join()方法,主进程会先等待子进程p先执行完成之后再执行
    p.join()
    print('主进程执行完成')
    
结果:
主进程开始执行
worker start
worker end
主进程执行完成

join()方法中加超时的使用

join()方法中加超时的使用
#coding=utf-8

from multiprocessing import Process
import time

def worker(seconds):
    print('worker start')
    time.sleep(seconds)
    print('worker end')

if __name__=='__main__':
    print('主进程开始执行')

    p=Process(target=worker,args=(5,))
    p.start()
    #希望如下的主进程执行语句在子进程执行完后之后输出
    #子进程对象调用join()方法,主进程会先等待子进程p先执行完成之后再执行
    #join(3)方法传入超时参数,如果超时时间子进程还未结束就直接执行主进程
    p.join(3)
    print('主进程执行完成')
结果:
主进程开始执行
worker start
主进程执行完成
worker end

你可能感兴趣的:(子进程join()方法的使用)