Я запускаю следующее решение из Как восстановить возвращаемое значение функции, переданной для многопроцессорности .Process?:
import multiprocessing
from os import getpid
def worker(procnum):
print('I am number %d in process %d' % (procnum, getpid()))
return getpid()
if __name__ == '__main__':
pool = multiprocessing.Pool(processes = 3)
print(pool.map(worker, range(5)))
который должен выводить что-то вроде:
I am number 0 in process 19139
I am number 1 in process 19138
I am number 2 in process 19140
I am number 3 in process 19139
I am number 4 in process 19140
[19139, 19138, 19140, 19139, 19140]
но вместо этого я получаю
[4212, 4212, 4212, 4212, 4212]
Если я загружаю pool.map в диапазон 1 000 000, используя более 10 процессов, я вижу не более двух разных pids.
Почему моя копия multiprocessing
, казалось бы, работает все в одном процессе?