理解为什么 numpy 在导入时会进行分叉

Raf*_*nar 5 python fork numpy multiprocessing

每当我创建import numpy11 个子进程(我的 CPU 有 6/12 个核心/线程)时,即使不使用numpy ,也会创建。这种情况只会发生一小会儿,但每个子进程都会收到内存中分配的对象的副本。这没什么大不了的,因为它在一开始就发生了,但我担心任何可能的副作用。有人可以解释一下为什么会发生这种情况吗?

这是重现问题的非常简单的代码:

import time
import numpy

def hello_world():
    print("Hello world")
    time.sleep(10)

if __name__ == '__main__':
    print("Running")
    time.sleep(30)
    hello_world()
Run Code Online (Sandbox Code Playgroud)

tbe*_*nst 0

这是由 OpenBLAS 引起的。您可以通过调用来解决此问题 OPENBLAS_NUM_THREADS=1 python myscript.py