Czy pule wieloprocesorowe dają każdemu procesowi taką samą liczbę zadań, czy też są przydzielane jako dostępne?
Kiedy tymap
iterowalny do amultiprocessing.Pool
czy iteracje są podzielone na kolejkę dla każdego procesu w puli na początku, czy też istnieje wspólna kolejka, z której wykonywane jest zadanie, gdy proces przychodzi za darmo?
def generate_stuff():
for foo in range(100):
yield foo
def process(moo):
print moo
pool = multiprocessing.Pool()
pool.map(func=process, iterable=generate_stuff())
pool.close()
Podano więc ten nieprzetestowany kod sugestii; jeśli w puli znajdują się 4 procesy, każdy proces otrzymuje przydzielone 25 rzeczy do zrobienia, czy też 100 rzeczy jest wybieranych jeden po drugim przez procesy szukające rzeczy do zrobienia, aby każdy proces mógł wykonać inną liczbę rzeczy, np. 30 , 26, 24, 20.