Я пытаюсь выполнить параллельные вычисления, используя numba, однако я столкнулся с проблемой: при использовании следующего кода значительно медленнее, если я переключаю параллель = 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
.
Есть идеи, почему это так?