首页 > 解决方案 > 如何制作 numpy.take 或 slice 多线程?

问题描述

我测试了 numpy.take 和 slice 的代码,如下所示:

import numpy as np
import time


a = np.random.randn(4000000,500)
b = np.arange(0, len(a))
t1 = time.time()
for i in range(10):
        a[b!=2]
t2 = time.time()
print(t2-t1)

t1 = time.time()
for i in range(10):
        a.take(b!=2, axis=0)
t2 = time.time()
print(t2-t1)

我检查了我的 CPU,其中大部分都是空闲的。仅使用 1 个 CPU。结果,时间很慢。

65.91494154930115
47.01117730140686

在我看来,切片是一种可并行化的操作。为什么 numpy 不并行化它?是 numpy 不支持可并行化切片还是我需要在 numpy 中使用一些特殊功能?

标签: pythonnumpyparallel-processing

解决方案


推荐阅读