Пул процессов Python не создает ожидаемого количества процессов

Я пытаюсь написать простую программу, используя модуль пула Python. Вот мой код:

from multiprocessing import Pool
from multiprocessing.pool import ApplyResult
import time
import os

def unwrap_self_f(arg, **kwarg):
  print 'inside unwrap_self_f'
  return C().f(arg, **kwarg)

class C:
  def f(self, name):
    return 'Inside f..Process id :' + str(os.getpid())

  def run(self):
    print 'Reached inside run..'
    print 'main process id ..', os.getpid()
    pool = Pool(processes=4)
    names = ['frank', 'justin', 'osi', 'thomas']        
    print pool.map(unwrap_self_f, names, 1)               

if __name__ == '__main__':
   print 'Starting....'
   c = C()
   print 'Running....'
   c.run()

Когда я запускал эту программу, я ожидал увидеть распечатанные 4 разных идентификатора процесса, по одному для каждого дочернего процесса, который был создан. Размер фрагмента, который я выбрал, равен 1, так что каждый элемент в списке переходит в отдельный процесс.

Однако печатаемый идентификатор процесса такой же. Я получаю следующий результат:

Starting....
Running....
Reached inside run..
main process id .. 1284
['Inside f..Process id :6872', 'Inside f..Process id :6872', 'Inside f..Process id :6872', 'Inside f..Process  id :6872']

Я здесь что-то не так? Кто-нибудь может пролить свет на это. Заранее спасибо.


person LearnToLive    schedule 23.11.2014    source источник
comment
У меня это работает под OS X. Итак, какую ОС вы используете и сколько ядер у вашей машины?   -  person deets    schedule 24.11.2014
comment
У меня это работает иногда (ubuntu 12.04.5). После добавления time.sleep(1) в рабочую функцию я получаю разные идентификаторы.   -  person hitzg    schedule 24.11.2014
comment
docs.python.org/2/library/ Ссылка на документацию, там говорится, что (приблизительный) размер этих фрагментов можно указать, установив для chunksize положительное целое число. Думаю, нет никакой гарантии, что указание размера блока будет работать - что произойдет, если вы его вообще не укажете?   -  person Tom Dalton    schedule 24.11.2014
comment
Также см. Параметр stackoverflow.com/questions / 3822512 / и stackoverflow.com/questions/13264435/   -  person Tom Dalton    schedule 24.11.2014
comment
Спасибо всем за помощь. После комментария @hitzg. Я добавил некоторую задержку в методе f и увеличил переданный список. Я смог увидеть разные идентификаторы. Я думаю, что python решает передать задачи разным процессам в зависимости от их доступности.   -  person LearnToLive    schedule 24.11.2014