如何将静态参数传递给python线程池映射

时间:2019-07-15 07:59:05

标签: python multithreading

假设我有一个在如下所示的多线程环境中调用的函数:

from multiprocessing.pool import Pool as _thread_pool

test_data = [('hi','bye')]

def print_data(arg,first=True):
    if first:
        print(arg[0])
    else:
        print(arg[1])

with _thread_pool(32) as pool:
    pool.map(print_data,test_data)

现在说我的test_data不仅是1个元素,而且是数百万个元素,我想调用map函数以始终使用first=False。是否有一种简单的方法,而无需在将{_1}}传递到pool.map之前在test_data中的每个元素中添加first=False呢?

1 个答案:

答案 0 :(得分:3)

使用functools.partial创建另一个函数:

import functools

...
    pool.map(functools.partial(print_data, first=False), test_data)