簡體   English   中英

為什么 python function 即使不應該並行工作?

[英]Why does a python function work in parallel even if it should not?

我正在使用healpy package 運行這段代碼。我沒有使用多處理,我需要它在單核上運行。 它工作了一段時間,但是,當我現在運行它時,function 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

有人知道為什么這個 function 並行運行嗎? 最重要的是,有人知道在單核中運行它的方法嗎?

謝謝!

在此線程中,他們建議相應地設置環境變量OMP_NUM_THREADS

合作過:

 import os os.environ['OMP_NUM_THREADS'] = '1' import healpy as hp import numpy as np

os.environ['OMP_NUM_THREADS'] = '1'必須在導入 numpy 和 healpy 庫之前完成。

至於原因:他們可能在您使用的函數的實現中使用了一些並行化技術。 根據變量的名稱,我猜它是OpenMP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM