我正在使用multiprocessing
包来生成多个执行函数的进程,比如func
(使用不同的参数)。func
导入numpy
包,我想知道是否每个进程都会导入包。事实上,主线程,或者更确切地说是主进程也可以导入numpy
,并且可以很容易地在不同的func
执行进程之间共享。
由于库的多次导入,将会对性能造成重大影响。
我正在使用multiprocessing
包来生成多个执行函数的进程,比如func
(使用不同的参数)。func
导入numpy
包,我想知道是否每个进程都会导入包。事实上,主线程,或者更确切地说是主进程也可以导入numpy
,并且可以很容易地在不同的func
执行进程之间共享。
由于库的多次导入,将会对性能造成重大影响。
我想知道是否每个进程都会导入包。
假设导入发生在您分叉该过程之后,那么,是的。不过,您可以通过在分叉之前进行导入来避免这种情况。
由于库的多次导入,将会对性能造成重大影响。
好吧,如果你在分叉之后进行导入,性能会受到影响,但可能不是“主要”的。操作系统很可能在其缓存中包含所有必要的文件,因此它只会从 RAM 读取,而不是从磁盘读取。
更新
才注意到这个...
事实上,主线程,或者更确切地说是主进程也导入
numpy
......
如果您numpy
在分叉之前已经导入,那么子流程中的导入只会创建对现有导入模块的引用。这应该不到一毫秒,所以我不会担心。