【问题标题】:How to multiprocess functions如何多处理函数
【发布时间】:2017-03-07 13:44:18
【问题描述】:

不可迭代的kwargs如何包含在concurrent.futures的map函数中?例如,在下面的代码中,如何将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)

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以为此使用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 使用该函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-16
      • 2011-01-14
      • 1970-01-01
      • 2020-09-28
      • 2016-01-03
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多