У меня очень простые случаи, когда работа, которая должна быть выполнена, может быть разбита и распределена между рабочими. Я попробовал очень простой многопроцессорный пример из здесь:
import multiprocessing
import numpy as np
import time
def do_calculation(data):
rand=np.random.randint(10)
print data, rand
time.sleep(rand)
return data * 2
if __name__ == '__main__':
pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size)
inputs = list(range(10))
print 'Input :', inputs
pool_outputs = pool.map(do_calculation, inputs)
print 'Pool :', pool_outputs
Вышеуказанная программа выводит следующий результат:
Input : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 7
1 7
2 7
5 7
3 7
4 7
6 7
7 7
8 6
9 6
Pool : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Почему одно и то же случайное число печатается? (У меня 4 процессора в моей машине). Это лучший/самый простой способ продвижения вперед?