问题描述
初始条件: 数组数据是一个长度为50000 p的1d numpy数组,它是一个整数,可以在10到300之间变化。
这会导致错误:
from numba import jit,njit,prange
import numpy as np
@njit(parallel=True)
def jitmovavg(data,p):
arr_size=len(data)
mean_array=np.zeros(arr_size-p+1)
for i in prange(len(mean_array)):
mean_array[i]=np.sum(data[i:i+p])/p
return mean_array
这不会导致错误,但是对于大量的p来说很慢:
@njit
def jitmovavg(data,p):
arr_size=len(data)
mean_array=np.zeros(arr_size-p+1)
for i in range(len(mean_array)):
mean_array[i]=np.sum(data[i:i+p])/p
return mean_array
我猜想这与并行循环中的竞争条件有关。有办法解决这个问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)