gpt4 book ai didi

python - 发生 fork 时,主进程中的 Numpy 线程池大小会发生变化

转载 作者:行者123 更新时间:2023-12-04 07:30:58 25 4
gpt4 key购买 nike

在导入 Numpy 时,Numpy 使用的底层 BLAS 库会分配一个线程池。这是意料之中的,可以通过简单地运行来观察:

cat /proc/<my python pid>/status | grep Threads
奇怪的是,如果我的主进程曾经调用 fork() ,所有这些线程都在我的主进程中消失了。需要明确的是,这是 进程(我知道 fork 进程不保留父线程的副本)。
这种行为很容易重现。确切的线程数可能因机器而异:
import numpy as np  # main process has 36 threads
import os

os.fork() # main process has 1 thread
我想了解这种行为及其来源,但我很难追踪它。
我正在使用 Python 3.6.9和 Numpy 1.18.4 .

最佳答案

经过一番挖掘,这里解释了行为的原因:
https://github.com/xianyi/OpenBLAS/issues/294
另外值得注意的是,如果我尝试在 fork() 之后进行计算,线程会再次产生。这需要 Numpy 使用底层 BLAS 库。

关于python - 发生 fork 时,主进程中的 Numpy 线程池大小会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67929982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com