Это, похоже на ваш обновленный код, работает для меня:
import time
from multiprocessing import Pool
def function(x):
return x * x
if __name__ == '__main__':
start = time.time()
pool = Pool(1)
data = range(50)
results = pool.map(function, data)
pool.close()
output = pool.join()
print results
print 'in %.4f seconds' % (time.time() - start)
запустив его из командной строки:
c:\srv\tmp> python mptest.py
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
in 0.2950 seconds
мы можем добавить некоторые записи в function
:
def function(x):
print('inside function(%r)' % x)
res = x * x
print('returning from function(%r) => %r' % (x, res))
return res
и работая с data = range(20)
и pool = Pool(2)
, мы можем видеть два процесса, борющихся за вывод:
c:\srv\tmp> python mptest.py
inside function(0)
inside function(3)returning from function(0) => 0
rinside function(1)eturning from function(3) => 9
rieturning from function(1) => 1nside function(4)
irnside function(2)eturning from function(4) => 16
rieturning from function(2) => 4nside function(5)
irnside function(6)eturning from function(5) => 25
irnside function(9)eturning from function(6) => 36
rieturning from function(9) => 81nside function(7)
irnside function(10)eturning from function(7) => 49
rieturning from function(10) => 100nside function(8)
irnside function(11)eturning from function(8) => 64
rieturning from function(11) => 121nside function(12)
irnside function(15)eturning from function(12) => 144
rieturning from function(15) => 225nside function(13)
irnside function(16)eturning from function(13) => 169
rieturning from function(16) => 256nside function(14)
irnside function(17)eturning from function(14) => 196
rieturning from function(17) => 289nside function(18)
returning from function(18) => 324
inside function(19)
returning from function(19) => 361
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]
in 0.2700 seconds