Sim*_*ori 6 python multithreading multicore multiprocessing healpy
我正在使用healpy包运行此代码。我没有使用多处理,我需要它在单核上运行。它运行了一段时间,但是,当我现在运行它时,该函数healpy.projector.GnomonicProj.projmap会占用所有可用的内核。
这是有罪的代码块:
def Stacking () :
f = lambda x,y,z: pixelfunc.vec2pix(xsize,x,y,z,nest=False)
map_array = pixelfunc.ma_to_array(data)
im = np.zeros((xsize, xsize))
plt.figure()
for i in range (nvoids) :
sys.stdout.write("\r" + str(i+1) + "/" + str(nvoids))
sys.stdout.flush()
proj = hp.projector.GnomonicProj(rot=[rav[i],decv[i]], xsize=xsize, reso=2*nRad*rad_deg[i]*60/(xsize))
im += proj.projmap(map_array, f)
im/=nvoids
plt.imshow(im)
plt.colorbar()
plt.title(title + " (Map)")
plt.savefig("../Plots/stackedMap_"+name+".png")
return im
Run Code Online (Sandbox Code Playgroud)
有人知道为什么这个函数是并行运行的吗?最重要的是,有人知道如何在单核中运行它吗?
谢谢你!
在此线程中,他们建议相应地设置环境变量OMP_NUM_THREADS:
合作过:
Run Code Online (Sandbox Code Playgroud)import os os.environ['OMP_NUM_THREADS'] = '1' import healpy as hp import numpy as np
os.environ['OMP_NUM_THREADS'] = '1'必须在导入 numpy 和ealpy 库之前完成。
至于原因:可能他们在您使用的函数的实现中使用了一些并行化技术。根据变量的名称,我猜是OpenMP 。
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |