author:skate
time:2014/10/13
Python的multiprocessing连接池
[root@skatedb55 ~]# more pool2.py
#!/usr/bin/env python
#encoding: UTF-8
#Author:Skate
from multiprocessing import Pool
import time
def fun(x):
time.sleep(2)
return "subprocess run result : %d" % (x*x+x)
if __name__ == '__main__':
pool = Pool(processes=10) //开始4个进程
result = []
for i in range(10):
result.append(pool.apply_async(fun,(i,))) //异步调用fun
pool.close()
pool.join()
for res in result:
print res.get() //用get()获得结果
print "[apply] all subprocesses have run!"
pool = Pool(processes=10)
result1 = []
#for i in range(10):
result1.append(pool.map_async(fun,range(10)))
pool.close()
pool.join()
for res1 in result1:
print res1.get()
print "[map] all subprocesses have run!"
[root@skatedb55 ~]# time python pool2.py
subprocess run result : 0
subprocess run result : 2
subprocess run result : 6
subprocess run result : 12
subprocess run result : 20
subprocess run result : 30
subprocess run result : 42
subprocess run result : 56
subprocess run result : 72
subprocess run result : 90
[apply] all subprocesses have run!
['subprocess run result : 0', 'subprocess run result : 2', 'subprocess run result : 6', 'subprocess run result : 12', 'subprocess run result : 20', 'subprocess run result : 30', 'subprocess run result : 42', 'subprocess run result : 56', 'subprocess run result : 72', 'subprocess run result : 90']
[map] all subprocesses have run!
real 0m4.101s
user 0m0.044s
sys 0m0.065s
---end---