为什么numba parallel = True比parallel = False慢

时间:2019-10-28 18:31:17

标签: python parallel-processing numba

我正在尝试使用numba执行并行计算,但是,我遇到了一个问题:使用以下代码,如果我打开parallel = True而不是关闭它,则速度明显慢得多。

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

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

不同流程之间的协调会增加性能成本。这就是您看到的性能损失,如果真正值得进行并行化工作,那么假定工作量足够大,您将获得净收益。