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

问题描述 投票:0回答:1

每当我创建

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

这里有非常简单的代码来重现问题:

import time
import numpy

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

if __name__ == '__main__':
    print("Running")
    time.sleep(30)
    hello_world()
python numpy multiprocessing fork
1个回答
0
投票

这是由 OpenBLAS 引起的。您可以通过调用来解决此问题

OPENBLAS_NUM_THREADS=1 python myscript.py

© www.soinside.com 2019 - 2024. All rights reserved.