Python-pool.map函数错误:'ValueError:`x`必须至少包含2个元素'

时间:2019-04-24 00:17:14

标签: python-2.7 python-multiprocessing

我尝试使用以下Python代码(使用多重处理库):

i

但是在执行时,出现以下错误:

import multiprocessing as mp

def MAIN_LOOP(lll):
    global aa
    global bb
    aa, bb = 0,0
    if paramo == 3:
        C_ij = np.zeros((len(zrange), len(zrange)))
    C_ij_up = np.zeros((len(zrange), len(zrange)))
    C_ij_dw = np.zeros((len(zrange), len(zrange)))
    while aa < len(zrange):
        while bb <= aa:
            if paramo == 3:
                C_ij[aa][bb] = Pobs_C(zpm, zrange[aa], zrange[bb], h[2], Omega_m[2], Omega_DE[2], w0[2], wa[2], E_tab, R_tab, DG_tab, W_tab, l[lll], P_dd_C, R_tab(z_pk)) 
            C_ij_up[aa][bb] = Pobs_C(zpm, zrange[aa], zrange[bb], h[0], Omega_m[0], Omega_DE[0], w0[0], wa[0], E_tab_up, R_tab_up, DG_tab_up, W_tab_up, l[lll], P_dd_C_up, R_tab_up(z_pk))
            C_ij_dw[aa][bb] = Pobs_C(zpm, zrange[aa], zrange[bb], h[3], Omega_m[3], Omega_DE[3], w0[3], wa[3], E_tab_dw, R_tab_dw, DG_tab_dw, W_tab_dw, l[lll], P_dd_C_dw, R_tab_dw(z_pk))

            if aa != bb:
                if paramo == 3:
                    C_ij[bb][aa] = C_ij[aa][bb]
                C_ij_up[bb][aa] = C_ij_up[aa][bb]
                C_ij_dw[bb][aa] = C_ij_dw[aa][bb]
            bb=bb+1
        bb=0
        aa=aa+1

    if paramo == 3:
        aa, bb = 0,0 
        outF=open(CC_path[2]+"/COVAR_fid_"+str(l[lll]),'w')
        while aa < len(C_ij):
            while bb < len(C_ij):
                outF.write(str("%.16e" % C_ij[aa][bb]))
                outF.write(str(' '))
                bb=bb+1
            outF.write(str('\n'))
            bb=0
            aa=aa+1
        outF.close()

    aa, bb = 0,0            
    outU=open(CC_path[0]+"/COVAR_up_"+str(l[lll]),'w')
    outD=open(CC_path[3]+"/COVAR_dw_"+str(l[lll]),'w')
    while aa < len(C_ij_up):
        while bb < len(C_ij_up):
            outU.write(str("%.16e" % C_ij_up[aa][bb]))
            outU.write(str(' '))
            outD.write(str("%.16e" % C_ij_dw[aa][bb]))
            outD.write(str(' '))
            bb=bb+1
        outU.write(str('\n'))
        outD.write(str('\n'))
        bb=0
        aa=aa+1
    outU.close()
    outD.close()
    lll=lll+1

lll = range(len(l))

if __name__ == '__main__':
    pool = mp.Pool(12)
    pool.map(MAIN_LOOP, lll)
    pool.close()
    pool.join()

我尝试使用yield生成器,但仍然出现相同的错误。

我想把这部分代码作为工作。如果有人有想法或建议,可以告诉它。

致谢

0 个答案:

没有答案
相关问题