python-2.7 - pool.map 函数出错:'ValueError:`x` 必须包含至少 2 个元素'
问题描述
我尝试使用以下 Python 代码(使用多处理库):
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()
但在执行时,我收到以下错误:
Traceback (most recent call last):
File "Photo_SAF_flat.py", line 412, in <module>
pool.map(MAIN_LOOP, lll)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 253, in map
return self.map_async(func, iterable, chunksize).get()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py", line 572, in get
raise self._value
ValueError: `x` must contain at least 2 elements.
我尝试使用带有产量的生成器,但仍然得到相同的错误。
我想让这部分代码工作。我该怎么做?
解决方案
推荐阅读
- java - 创建 java 代理客户端时出错
- java - 转换为分数
- reactjs - 使用`react-apollo-hooks`和`useSubscription`钩子时如何避免“自动更新”缓存
- mongodb - MongoDB条件搜索与父文档和数组中的嵌套文档
- javascript - 使用生产构建注册服务工作者脚本时出错
- python - 如何将源文件传输到 Dask 工作人员?
- r - 用总和约束解决 R 中的简单二次优化
- c# - 为什么回调动作指向的方法不是分配的?
- jenkins-pipeline - 如何在沙盒管道脚本中将 Jenkins 配置为来自 Artifactory 的 @Grab 依赖项
- .net - 是否可以从 Powershell 脚本生成 MSIL?