почему функция для pool.map должна быть определена до multiprocessing.pool? - PullRequest
0 голосов
/ 05 июня 2018

При использовании multiprocessing.pool и pool.map кажется, что функцию map необходимо определить до создания пула.Почему это необходимо?

Вот рабочая версия:

import multiprocessing

def my_power(x):
  return x * x

_pool = multiprocessing.Pool()
my_list = _pool.map(my_power, list(range(10)))
print(my_list)

Версия, которая получает ошибку, AttributeError: Не удается получить атрибут 'my_power' ...

_pool = multiprocessing.Pool()

def my_power(x):
  return x * x

my_list = _pool.map(my_power, list(range(10)))
print(my_list)

1 Ответ

0 голосов
/ 13 июня 2018

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

...