python - 如何制作 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 中使用一些特殊功能?
解决方案
推荐阅读
- matrix - 并行求解线性方程组
- android - 找不到用户 0 的提供者;期望为此权限找到一个有效的 ContentProvider
- angular - angular6:我希望我继承的组件具有父组件的一些属性
- javascript - How {}.hasOwnProperty() works?
- bash - Set environment variables in bash file calling a Matlab script
- php - OOP - sql commands inside PHP class
- r - 使用 MICE 进行多重插补后的个体 AUC
- java - 我想找到数组第一个和最后一个元素以及第二个和第二个最后一个元素以及第三个和第三个最后一个元素的总和等等
- python - 在 Ubuntu 18.04 上使用 Python3.6 安装底图
- java - 如何合并/更新两个列表