0

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

由于库的多次导入,将会对性能造成重大影响。

4

1 回答 1

3

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

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

由于库的多次导入,将会对性能造成重大影响。

好吧,如果你在分叉之后进行导入,性能会受到影响,但可能不是“主要”的。操作系统很可能在其缓存中包含所有必要的文件,因此它只会从 RAM 读取,而不是从磁盘读取。

更新

才注意到这个...

事实上,主线程,或者更确切地说是主进程也导入numpy......

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

于 2013-04-17T14:54:54.023 回答