Chciałbym przekazać argumenty słów kluczowych do mojej funkcji pracownika z Pool.map(). Nie mogę znaleźć tego wyraźnego przykładu podczas przeszukiwania forów.przekazywanie kwargs z multiprocessing.pool.map
Przykład Kod:
import multiprocessing as mp
def worker((x,y), **kwargs):
kwarg_test = kwargs.get('kwarg_test', False)
print("kwarg_test = {}".format(kwarg_test))
if kwarg_test:
print("Success")
return x*y
def wrapper_process(**kwargs):
jobs = []
pool=mp.Pool(4)
for i, n in enumerate(range(4)):
jobs.append((n,i))
pool.map(worker, jobs) #works
pool.map(worker, jobs, kwargs) #how to do this?
def main(**kwargs):
worker((1,2),kwarg_test=True) #accepts kwargs
wrapper_process(kwarg_test=True)
if __name__ == "__main__":
main()
wyjściowa:
kwarg_test = True
Success
kwarg_test = False
kwarg_test = False
kwarg_test = False
kwarg_test = False
TypeError: unsupported operand type(s) for //: 'int' and 'dict'
Błąd typ ma do czynienia z argumentami analizowania wewnątrz multiprocessing.Pool lub kolejki, a ja próbowałem kilka innych składnie, jak robienie lista kwargów; [kwargs, kwargs, kwargs, kwargs], a także kilka prób włączenia kwarg do listy zadań, ale bez powodzenia. Śledziłem kod w trybie wieloprocesorowym. Z mapy do map_async i dotarłem do 01: w pool.py po napotkaniu struktury generatora. Jestem szczęśliwy, aby dowiedzieć się więcej na ten temat w przyszłości, ale na razie próbuję się dowiedzieć:
Czy istnieje prosta składnia pozwalająca na przekazanie kwargs z pool.map?