为什么这里必须有 if __name__ == '__main__':
如题
# coding:utf-8 """ 使用了 multiprocessing 模块来创建两个子进程(work_a 和 work_b),并在主进程中启动它们。 具体来说,这个程序的功能是: 主进程使用 time.time() 函数记录程序开始运行的时间;主进程创建了两个子进程,分别执行 work_a 和 work_b 函数;主进程等待子进程执行完毕; 主进程输出每个子进程是否还在运行,以及子进程执行的时间消耗;最后输出主进程的 PID 以及程序运行的总时间。 其中,work_a 和 work_b 函数都是简单的打印语句,用于测试子进程的执行情况。 在这个程序中,主进程先创建了子进程 a_p,然后等待子进程执行完毕后创建了子进程 b_p,并输出了子进程的名称和状态。 最后输出了主进程的 PID 和程序运行的总时间。 """ import time import os import multiprocessing def work_a(): for i in range(3): print(i, 'a', os.getpid()) time.sleep(1) def work_b(): for i in range(3): print(i, 'b', os.getpid()) time.sleep(1) if __name__ == '__main__': start = time.time() a_p = multiprocessing.Process(target=work_a) b_p = multiprocessing.Process(target=work_b) for p in (a_p, b_p): p.start() p.join() for p in (a_p, b_p): print(p.is_alive()) print(os.getpid(), time.time() - start)
10
收起
正在回答
1回答
同学,你好!进程中每个子进程是通过导入所在脚本的模块实现模块中函数的调用的,所以,为了避免将创建子进程的语句也被导入(因为这样就会造成无限循环创建子进程,因此python禁止了在子进程中再创建子进程,否则会报错),创建子进程的语句必须在if __name__=='__main__'语句之后定义,或者如果创建子进程的语句是定义在一个函数中的,那么这个函数调用必须在if __name__=='__main__'语句之后,这是python多进程中的强制性语法规则。
祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星