есть ли проблема, если я вызываю starmap дважды или больше? - PullRequest
0 голосов
/ 18 июня 2020

У меня проблема с использованием многопроцессорности в python3.

При использовании starmap у меня разная длина списка аргументов, например event_list (length: 8), confs (length: 2), overwrite (длина: 1).

from multiprocessing import Pool
from iteltools import repeat
p = multiprocessing.Pool(processes=3)
for conf in confs:
  p.starmap( some_func, zip(event_list, repeat(conf), repeat(overwrite))

Приведенный выше код работает хорошо, но вызов starmap дважды или более вызывает у меня дискомфорт.

Подскажите, пожалуйста, другие лучшие способы рефакторинга кода.

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете создать один генератор значений и обработать его одним выражением звездной карты следующим образом. Это будет проще для читателей, знакомых со стандартной библиотекой Python.

import multiprocessing
import itertools
p = multiprocessing.Pool(processes=3)
p.starmap(some_func, itertools.product(event_list, confs, overwrite))
...