主进程和子进程

主进程和子进程

https://img1.sycdn.imooc.com//climg/64269322097de8ce10980384.jpg

1,老师视频中显示,这段代码执行顺序是:

主进程先执行,完成后子进程a、b再同时进行。

是这样的吗?

2,如果是的话,为什么呢?不是说主进程 和 子进程完全独立吗,为什么不是三者同时进行,而是先进行主进程,再进行子进程??

3,主进程和子进程到底是什么关系?

4,老师一直说 子进程是主进程调动的??这句话怎么理解


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!1、是主进程先执行,先执行start=time.time(),然后进程a_p、进程b_p启动就绪状态。操作系统调度哪个进程哪个进程执行,同学说的主进程先执行是因为主进程执行代码较少执行完成过快,同学可以用time.sleep(30)让主进程多执行一会,a_p、b_p子进程就会先执行完,主进程再执行。

import time
import os
import multiprocessing

def work_a():
    for i in range(10):
        print(i, 'a', os.getpid())
        time.sleep(1)

def work_b():
    for i in range(10):
        print(i, 'b', os.getpid())
        time.sleep(1)


if __name__ == '__main__':
    start = time.time() # 主进程1
    a_p = multiprocessing.Process(target=work_a)  # 子进程1
    a_p.start()  # 子进程1执行
    b_p = multiprocessing.Process(target=work_b)  # 子进程2
    b_p.start()  # 子进程2执行
    time.sleep(30)
    print('时间消耗是:', time.time() - start)  # 主进程代码2
    print('parent pid is %s' % os.getpid())  # 主进程代码3行

2、是独立进行的,但是哪个进程执行是操作系统调度的,这个没有固定顺序 ,谁执行的快谁就先结束

3、主进程可以调用子进程

4、主进程调动子进程,if __name__="__main__"下的程序入口属于主进程,a_p是主进程下创建的子进程,a_p.start()是在主进程里调用的子进程,启动了子进程,所以说是调动。


祝学习愉快~

  • 慕设计4457883 提问者 #1

    您说的“是独立进行的,但是哪个进程执行是操作系统调度的,这个没有固定顺序 ,谁执行的快谁就先结束”是什么意思,可以再阐述一下吗?

    https://img1.sycdn.imooc.com//climg/64269e61094a1f4211230421.jpg

    比如这段代码里,进入主进程就 创建并就绪了a、b两个子进程, start后面的主进程函数也摆好了

    所以是:同时有三个进程摆好了,等待操作系统来启动。

    理想状态是:三个全部同时、同分同秒同毫秒启动,但是不一定能这样。

    因为具体的启动细节、谁比谁先启动几毫秒、由于内存不够只有两个进程能启动等等,这些都是由操作系统来决定了?

    这样理解对吗?

    2023-03-31 16:52:30
  • 好帮手慕小猿 回复 提问者 慕设计4457883 #2

    同学,你好!同学理解的正确,棒棒哒~

    祝学习愉快~

    2023-03-31 17:11:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师