多进程之join简单应用

多进程是我们需要掌握的技能之一,在多进程和多线程中都有join 方法,今天简单演示一下join在多进程中的应用:
首先我们先看一下,加了join与不加join 的区别:
事例一–加了join:

from multiprocessing import Process


def task():
    for i in range(10):
        print(f'子 run--{i}')


if __name__ == '__main__':
    p = Process(target=task)
    p.start()  # 向操作系统发送指令
    p.join()  # 让主进程等待子进程执行完毕再继续向下执行
    print('over')

执行结果:

子 run--0
子 run--1
子 run--2
子 run--3
子 run--4
子 run--5
子 run--6
子 run--7
子 run--8
子 run--9
over

事例二–不加join :

from multiprocessing import Process


def task():
    for i in range(10):
        print(f'子 run--{i}')


if __name__ == '__main__':
    p = Process(target=task)
    p.start()  # 向操作系统发送指令
    print('over')

执行结果:

over
子 run--0
子 run--1
子 run--2
子 run--3
子 run--4
子 run--5
子 run--6
子 run--7
子 run--8
子 run--9

通过对比发现 join 有阻塞或等待的作用,在事例一中加了join 结果over在进程执行结束后输出 ,在事例二中,未加join 程序执行 不需等待就可以输出over

下面进步一步验证:

import time
from multiprocessing import Process


def task():
    for i in range(10):
        time.sleep(1)
        print(f'子 run--{i}')


if __name__ == '__main__':
    p = Process(target=task)
    p.start()  # 向操作系统发送指令
    time.sleep(3)
    print('over')

输出结果:

子 run--0
子 run--1
子 run--2
over
子 run--3
子 run--4
子 run--5
子 run--6
子 run--7
子 run--8
子 run--9

即加了time sleep 方法后 结合事例 我们即可对join有一定的认识和了解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值