【发布时间】:2021-04-27 20:13:57
【问题描述】:
我有一个用python编写的嵌套循环系统如下:
for yt in range(dims[1]):
for xt in range(dims[2]):
for yp in range(dims[1]):
for xp in range(dims[2]):
corr[yt,xt,yp,xp] = sp.spearmanr(prec_tar[:,yt,xt],prec_pre[:,yp,xp],axis=0)[0]
corr2[yt,xt,yp,xp] = sp.spearmanr(prec_tar[:,yt,xt],prec_pre2[:,yp,xp],axis=0)[0]
corr3[yt,xt,yp,xp] = sp.spearmanr(prec_tar[:,yt,xt],prec_pre3[:,yp,xp],axis=0)[0]
其中 dims 的形状为 (1710, 69, 21),而 corr、corr2 和 corr3 都是 xarray Dataarray,其中包含形状为 (69,21,69,21) 的空 NumPy 数组。
现在,问题是这个脚本需要很长时间才能完成(约 6 小时以上)。我不确定嵌套循环设置是否导致它,或者 sp.spearmanr 是否是罪魁祸首(或者可能两者兼而有之)。我正在寻找使此运行速度更快的方法,特别是,我想知道是否可以使用并行处理。也欢迎其他提示。提前致谢!
编辑:我还应该补充一点,prec_tar、prec_pre、prec_pre2 和 prec_pre3 都具有与 dims 相同的形状(即 (1710, 69, 21))。
【问题讨论】:
标签: python numpy parallel-processing scipy python-xarray