如何将不可迭代的wargs包含在mapconcurrent.futures函数中?例如,在下面的代码中,对于所有c函数调用,如何将single称为False?也就是说,single(iterable_a[i], iterable_b[i], c=False)其中i是0到3之间的一个整数。

import concurrent.futures

def single(a, b, c=True):
    return (a, b, c)

if __name__ == '__main__':
    iterable_a = range(4)
    iterable_b = range(4,8)
    with concurrent.futures.ProcessPoolExecutor() as executor:
        results = executor.map(single, iterable_a, iterable_b)

最佳答案

您可以为此使用functools.partial

from functools import partial

single2 = partial(single,c=False)


将生成一个函数single2,其中c设置为False。因此,您可以使用:

from functools import partial

results = executor.map(partial(single,c=False), iterable_a, iterable_b)


因此,您的map调用从partial(single,c=False)生成的函数,而您map使用该函数。

关于python - 如何多进程功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42649940/

10-12 14:48