python中守护主进程以及join的认识

1.python中默认进程是非守护的,此时假如设置了多个进程,主进程非守护,要等待所有子进程运行结束才能退出

2.当设置了守护主进程,如:进程对象.daemon = True,此时主进程结束子进程就得结束

3.第二点提出,子进程没结束主进程就可以强制将其结束,显然在大多数情景不能符合生产需要,我们就可以将子进程设置join()从而实现子进程执行完主进程才能执行,join一旦执行会阻塞主进程,join的子进程以后不影响其他进程的并行运行:join之前的进程都会并行执行,join之后的进程也会在解阻塞后继续并行运行。

详细代码如下:

import os
import time
from multiprocessing import Process


def work(t):
    for i in range(3):
    # while True:
        print('time之前%s' % os.getpid())
        time.sleep(t)
        print('time之后子线程%s正在执行' % os.getpid())

def pr():
    for i in range(8):
        time.sleep(0.3)
        print('ksfjladfjalkdfjalsdjflk')

def q():
    i = input('输入退出')

if __name__ == '__main__':

    p1 = Process(target=work, args=(0.5, ))
    p2 = Process(target=work, args=(5, ))
    p1.daemon = True
    p2.daemon = True
    p1.start()
    p2.start()
    pr()
    p1.join()
    pr()
    p3 = Process(target=work, args=(0.5,))
    p4 = Process(target=work, args=(5,))
    p3.daemon = True
    p4.daemon = True
    p4.start()
    p3.start()
    pr()
    print('主进程%sover' % os.getpid())

大家自己测试,自己学习哈

猜你喜欢

转载自blog.csdn.net/weixin_31449201/article/details/81709239