You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

np.linalg.inv是否持有GIL?多线程无加速反而变慢问题咨询

为什么np.linalg.inv在Python多线程下无法加速?

我了解大多数NumPy操作会释放GIL,因此在Python多线程环境下能获得预期的加速效果,但发现np.linalg.inv并非如此。

实验

我进行了如下实验:

import numpy as np
import time
from concurrent.futures import ThreadPoolExecutor


def numpy_op(arr):
    # 执行矩阵求逆
    return np.linalg.inv(arr)

num_workers = 8
np.random.seed(42)
args = [np.random.randn(10000, 10000) for _ in range(num_workers)]

# 线程池并行执行
s_time = time.time()
with ThreadPoolExecutor(max_workers=num_workers) as executor:
    res = list(executor.map(numpy_op, args))

# 串行执行
res = []
for arg in args:
    res.append(numpy_op(arg))
print(f'耗时: {time.time()-s_time:.2f}s')

结果

  • 多线程:36.44s
  • 串行:28.14s

但如果换成其他NumPy操作,比如:

def numpy_op(arr):
    # 一些普通NumPy运算
    return (arr**2 + 2) ** 0.5

结果

  • 多线程:0.62s
  • 串行:3.71s

版本信息

使用的版本为Python 3.9.10和NumPy 1.24.3


内容的提问来源于stack exchange,提问作者noah0822

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:52:10