starmap池函数的return值的顺序是什么?
What is the order of return value of the starmap pool function?
使用以下代码:
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
我想有更好的解决方案。任何帮助将不胜感激。
是的。 Pool.starmap()
- 和 Pool.map()
- return 一个结果列表,结果列表的结果按应用于可迭代参数的函数的从左到右的顺序排列。同样的方式,例如,内置 map()
和 itertools.starmap()
,在这方面工作,尽管那些 return 生成器而不是列表。
这种不保证结果顺序的唯一函数是Pool.imap_unordered()
,它return是一个可迭代的,它没有定义任何关于顺序的信息结果 return。
使用以下代码:
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
我想有更好的解决方案。任何帮助将不胜感激。
是的。 Pool.starmap()
- 和 Pool.map()
- return 一个结果列表,结果列表的结果按应用于可迭代参数的函数的从左到右的顺序排列。同样的方式,例如,内置 map()
和 itertools.starmap()
,在这方面工作,尽管那些 return 生成器而不是列表。
这种不保证结果顺序的唯一函数是Pool.imap_unordered()
,它return是一个可迭代的,它没有定义任何关于顺序的信息结果 return。