带有for循环的多参数python多重处理

2024-04-25 11:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我对多重处理模式有问题。 使用for循环传递单个参数时,我的代码可以工作:

def job(a):
    pass

p = Pool()
res = [p.apply_async(job, (a,)) for a in A]
p.close()
p.join()

当用for循环传递多个参数时,我无法让它工作。这可能吗?你知道吗

def job(a, b, c, d):
    pass

p = Pool()
res = [p.apply_async(job, (a,), (b, c, d) for a in A]  #??
p.close()
p.join()

Tags: 代码inforclose参数asyncdef模式
2条回答

我认为有一个语法。 试试这个:

 res = [p.apply_async(job,(a,b,c,d)) for a in A]

如何使用multiprocessing.Pool? 它将遍历您的输入,通过使用partial,您可以向它传递更多参数。 像这样:

import multiprocessing
from functools import partial


def job(a, b, c):
    print("{} - {} - {}".format(a, b, c))

def main():
    iterable = [1, 2, 3, 4, 5, 6]
    pool = multiprocessing.Pool(processes=3)
    func = partial(job, "static arg1", "static arg2")
    pool.map(func, iterable)
    pool.close()
    pool.join()

if __name__ == "__main__":
    main()

输出为:

static arg1 - static arg2 - 1
static arg1 - static arg2 - 2
static arg1 - static arg2 - 3
static arg1 - static arg2 - 4
static arg1 - static arg2 - 5
static arg1 - static arg2 - 6

相关问题 更多 >