正在回答
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()是在主进程里调用的子进程,启动了子进程,所以说是调动。
祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星