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())

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值