如何将 multiprocessing.Pool.map 与迭代器一起使用并单独输入函数

How use multiprocessing.Pool.map with iterator and separat input for function

我如何传递完整的参数,而不在核心之间拆分它们,以运行 myfun 并同时传递集合 [1,2,3,4,5] 中的相应元素

p=Pool(5)
p.map(myfun(df_A,df_B),[1,2,3,4,5])

如果我以这种方式实现它,该函数将获得参数 df_A 和 df_B 但不是集合中的元素

这是 myfun 的示例:

def myfunc(df_A, df_B, e):
    do_something
    print(df_A.iloc[e],df_A.iloc[e])

e 是集合 [1,2,3,4,5] 的一个元素

你可以考虑这样的事情(可能有更好的方法):

from multiprocessing import Pool

def myfunc(a, b, c):
    print(a, b, c)

df_A = 1
df_B = 2

def main():
    with Pool() as pool:
        pool.starmap(myfunc,[[df_A, df_B, x] for x in range(1, 6)])

if __name__ == '__main__':
    main()

输出:

1 2 1
1 2 2
1 2 3
1 2 4
1 2 5