pool创建多进程
2024-09-01 08:32:15
这中方式用的比较多,毕竟要控制并发数量,不可能不限制并发数
#_*_coding:utf-8_*_
from multiprocessing import Pool
import time def f(x):
#制造一个进程超时的效果
if x == 4:
time.sleep(4)
else:
time.sleep(1)
return x*x if __name__ == '__main__':
pool = Pool(processes=4)
res_list = []
#执行方法,res= pool.apply_async(f,[i,]) 这只是一种写法.以下这些行用这一条就能搞定print pool.map(f,range(5))
for i in range(5):
#异步方式
res= pool.apply_async(f,[i,])
print '----:',i
res_list.append(res)
#循环获取结果
for i in res_list:
try:
#打印结果,如果获取结果超过2秒钟将报异常
print i.get(timeout=2)
except Exception:
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))就搞定。不用写那么多行
每个人的写法都不一样 所以就看大家的了
最新文章
- 探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御
- CSS3使用Font Awesome字体图标的控件样例(按钮,工具栏,输入框)
- Android属性动画源代码解析(超详细)
- python用迭代器方式便利目录下的文件
- NYOJ题目65另一种阶乘问题
- ASP.NET MVC 5 入门教程 (2) 控制器Controller
- C语言之移位操作
- BinaryWriter和BinaryReader用法
- JAVA基础之理解JNI原理
- 重新开始学习javase_控制程序流程
- iOS基础 - 内存分析
- [转] SpringJdbc的几种不同的用法
- 分布式架构--Dubbo项目实战学习文档
- Head First设计模式之迭代器模式
- 如何更改Linux的ssh端口
- spider 爬虫文件基本参数(3)
- echarts堆叠图添加总量
- js把页面的table标签导出为csv
- MyBatis探究-----传递参数详解
- Mysql清空表(truncate)与删除表中数据(delete)的区别