我正在尝试使用numba执行并行计算,然而,我遇到了一个问题:使用以下代码,与关闭parallel=True相比,打开numba的速度要慢得多。
import numpy as np
from numba import njit, prange
from numba.typed import List
import time
n = 1000
@njit(parallel = True)
def lamb(now):
timez = List()
k1 = List()
k = 0
for i in range(n):
timez.append(np.arange(i+1))
k1.append( len(timez[i][timez[i]<=now]) )
for i in prange(n):
k += k1[i]
return k
lamb(21)
start = time.time()
lamb(21)
end = time.time()
print("Elapsed (after compilation) = %s" % (end - start))如果为parallel = True,则运行时间为Elapsed (after compilation) = 0.012674093246459961。相比之下,如果为parallel = False,则所用时间为Elapsed (after compilation) = 0.007932901382446289。
你知道为什么会这样吗?
发布于 2019-10-29 02:44:35
不同进程之间的协调会增加性能成本。这就是你看到的性能损失,如果工作真的值得努力并行化,那么假设工作足够大,你就会获得净收益。
https://stackoverflow.com/questions/58596516
复制相似问题