我需要將一些引數傳遞給starmap_async
函式。我有一個串列my_list
,其中包含不同的值和一些重復的常量。我有一種方法可以將引數傳遞如下:
import multiprocessing as mp
from itertools import repeat
def f(a,b,c,d):
return (a,b,c,d)
my_list = [1,2,3,4,5]
with mp.Pool(cpu_num) as pool:
res = pool.starmap_async(f, zip(my_list, repeat(a),repeat(b),repeat(c),repeat(d)))
pool.close()
pool.join()
res.get()
它可以作業并生成這樣的引數,這是所需的輸出:
(1,a,b,c,d)
(2,a,b,c,d)
(3,a,b,c,d)
(4,a,b,c,d)
(5,a,b,c,d)
現在我想用這個map
函式來做這樣的事情:
res = pool.starmap_async(f, zip(my_list, repeat(list(map(repeat,
[a, b, c, d])))))
但后來我得到了這樣的論點:
(1,(a,b,c,d))
(2,(a,b,c,d))
(3,(a,b,c,d))
(4,(a,b,c,d))
(5,(a,b,c,d))
我該如何解決這個問題?
uj5u.com熱心網友回復:
嘗試這個:
import multiprocessing as mp
from itertools import repeat
def f(a,b,c,d):
return (a,b,c,d)
my_list = [1,2,3,4,5]
with mp.Pool(cpu_num) as pool:
res = pool.starmap_async(f, zip(my_list, *map(repeat, (a,b,c,d))))
pool.close()
pool.join()
res.get()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487970.html
下一篇:如何使用條件映射二維陣列?