在Python进程之间共享导入

时间:2013-04-17 14:46:50

标签: python numpy multiprocessing python-import

我正在使用multiprocessing包来生成执行函数的多个进程,比如func(使用不同的参数)。 func导入numpy包,我想知道每个进程是否都会导入包。事实上,主线程,或者更确切地说主进程也导入numpy,并且可以在不同的func执行进程之间轻松共享。

由于多次导入库,会有重大的性能损失。

1 个答案:

答案 0 :(得分:3)

  

我想知道每个进程是否都会导入包。

假设在您分叉过程之后进行导入,那么,是的。但是,您可以通过在fork之前执行导入来避免这种情况。

  

由于多次导入库,会有重大的性能损失。

好吧,如果你在fork之后进行导入会有性能损失,但可能不是" major"一。操作系统很可能在其缓存中包含所有必需的文件,因此它只能从RAM而不是磁盘读取。

<强>更新

刚刚注意到这一点......

  

实际上,主线程,或者说主流程也导入numpy ...

如果您在分叉之前已经导入numpy,那么子流程中的导入将仅创建对现有导入模块的引用。这应该不到一毫秒,所以我不担心。