【发布时间】:2022-01-11 02:34:57
【问题描述】:
使用以下代码:
def myFoo(par1,par2):
res=par1+par2
return res
inputPar=[(1,2),(2,3),(4,5)]
with Pool() as pool:
poolReturn=pool.starmap(myFoo, [(i) for i in inputPar])
我可以确定 poolReturn 中的索引对应于调用函数的顺序并设置了相应的参数吗?
那是:
poolReturn[0]=3 #1+2
poolReturn[1]=5 #2+3
poolReturn[2]=9 #4+5
可以肯定的是,我编写的这段代码我觉得“丑陋”
def myFoo(poolNb,par1,par2):
res=par1+par2
return {poolNb:res}
inputPar=[[1,2],[2,3],[4,5]]
with Pool() as pool:
poolReturn=pool.starmap(myFoo, [[i]+j for i,j in enumerate(inputPar)])
inputParamNb=1
resFromInputParamNb=poolReturn[:][inputParamNb][inputParamNb]
resFromInputParamNb
甚至更难看(键是字符串)。
def myFoo(poolNb,par1,par2):
res=par1+par2
dictKey='PoolNb_'+str(poolNb)
return {dictKey:res}
inputPar=[[1,2],[2,3],[4,5]]
with Pool() as pool:
poolReturn=pool.starmap(myFoo, [[i]+j for i,j in enumerate(inputPar)])
inputParString='PoolNb_1'
res_poolNb=[i[inputParString] for i in poolReturn if inputParString in i.keys()][0]
res_poolNb
我想有更好的解决方案。任何帮助将不胜感激。
【问题讨论】:
标签: python-3.x multithreading threadpool pool