python - 如何使用带有 *args 的映射在 python 函数调用中解包元组

标签 python map functional-programming multiprocessing

我目前正在对一组我想并行化的变量进行合并。我的代码看起来像这样:

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)

通常,为了加快长循环,我会将 mergelist 中的 for m 替换为...

from multiprocessing import Pool

p = Pool(8)
p.map(merger(m), mergelist)
p.close()

但是由于我使用星号来解包元组,所以我不清楚如何正确映射它。我如何获得 *m

最佳答案

使用lambda:

with Pool(8) as p:
    p.map(lambda m:merger(*m), mergelist)

关于python - 如何使用带有 *args 的映射在 python 函数调用中解包元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22052780/

相关文章:

python - 从字典的键和值创建字符串

android - 绘制虚线 (....) 路径而不是直线 (________)

scala - 如何在Scala中将对象列表转换为两个字段的映射

python - 识别具有相同列值的组并对它们进行计数

python opencv cv2.waitkey错误

javascript - Java 流类似于 JavaScript 数组吗?

javascript - Immutable.js 数据结构的自定义相等语义

javascript - 使用 Reduce 将每个数组元素的值加倍

python - subprocess.Popen 不是线程安全的?

带有映射声明的 C++ 模板参数