【发布时间】:2014-03-29 22:53:06
【问题描述】:
我目前正在对一组我想要并行化的变量进行合并。我的代码如下所示:
mergelist = [
('leftfile1', 'rightfile1', 'leftvarname1', 'outputname1'),
('leftfile1', 'rightfile1', 'leftvarname2', 'outputname2')
('leftfile2', 'rightfile2', 'leftvarname3', 'outputname3')
]
def merger(leftfile,rightfile,leftvarname,outvarname):
do_the_merge
for m in mergelist:
merger(*m)
通常,为了加快长循环,我会将 for m in mergelist 替换为...。
from multiprocessing import Pool
p = Pool(8)
p.map(merger(m), mergelist)
p.close()
但由于我使用星号来解包元组,我不清楚如何正确映射它。如何获得*m?
【问题讨论】:
-
itertools.starmap的存在似乎意味着标准的map不能轻易被强制执行此操作。当然,您可以创建一个包装函数,将唯一的参数解包后转发到实际实现。 -
你如何定义
merger?您不能将字符串文字指定为函数定义中的形式参数名称。 -
谢谢chepner,我更正了;粗心的伪编码。我需要一个更好的伪代码解释器。 ;)
标签: python map functional-programming multiprocessing