更新时间2019-04-28 10:23:26
1处:
from multiprocessing import Process
我们都知道,from ... import ... 要么是从模块中导入类或变量等 要么就是从包中导入模块
2处使用了Process类,说明1处是从模块中导入的一个类
那么问题来了,
打开PythonHome中的lib,发现multiprocessing 是一个包而不是模块,multiprocessing 下只有process.py
文件, 没有Process.py文件
所以我的问题是:
1. 这里的Process是哪里来的?他是类, 但是他是哪个文件的类?
2. 为什么3处必须要用if "__name__" == "__main__": 不然运行就报错, 我并没有把这个文件作为模块给别的文件用啊 我是直接运行的这个文件?
由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。
Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。
multiprocessing支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。