这中方式用的比较多,毕竟要控制并发数量,不可能不限制并发数
1 #_*_coding:utf-8_*_ 2 from multiprocessing import Pool 3 import time 4 5 def f(x): 6 #制造一个进程超时的效果 7 if x == 4: 8 time.sleep(4) 9 else: 10 time.sleep(1) 11 return x*x 12 13 14 15 if __name__ == ‘__main__‘: 16 pool = Pool(processes=4) 17 res_list = [] 18 #执行方法,res= pool.apply_async(f,[i,]) 这只是一种写法.以下这些行用这一条就能搞定print pool.map(f,range(5)) 19 for i in range(5): 20 #异步方式 21 res= pool.apply_async(f,[i,]) 22 print ‘----:‘,i 23 res_list.append(res) 24 #循环获取结果 25 for i in res_list: 26 try: 27 #打印结果,如果获取结果超过2秒钟将报异常 28 print i.get(timeout=2) 29 except Exception: 30 print "进程:%s 获取结果超时"% i
显示结果:
----: 0
----: 1
----: 2
----: 3
----: 4
0
1
4
9
进程:<multiprocessing.pool.ApplyResult object at 0x00000000026C9CF8> 获取结果超时
这个例子主要是告诉大家如何使用pool,例子中可以使用print pool.map(f,range(5))就搞定。不用写那么多行
每个人的写法都不一样 所以就看大家的了
时间: 2024-11-07 07:34:10