Я пытаюсь написать простую программу, используя модуль пула 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']
Я здесь что-то не так? Кто-нибудь может пролить свет на это. Заранее спасибо.
time.sleep(1)
в рабочую функцию я получаю разные идентификаторы. - person hitzg   schedule 24.11.2014