python进程池与元组
2015-11-17 21:40
579 查看
刚接触python时 看朋友写的代码 pool.apply_async(func,(x,))
他告诉我第二个括号里是参数,逗号一定不能省
然而在后来的使用中,发现不写这个,形如pool.apply_async(func,(x,y)) 也不会错
也就渐渐认为他在胡说,后面要不需要有逗号
然而今天调试共享变量,用到了pool.apply_async(func,(x,)) 发现进程池莫名其妙的完全失效
短短十行 调了半个晚上都不懂怎么会错了
百度了下pool的相关文章,发现后面传参用 [ ] 就可以
于是恍然大悟
其实他跟我讲的是只有一个参数的写法,把list写成了tuple,
但是定义tuple时如果只有一个元素,则必须加逗号,否则会产生歧义(括号表示元组还是单纯的括号),此时元组会退化成该单个元素本身
好吧……所以他坑了我一小下,而我也一直也稀里糊涂的这么用了
所以结论就是以后用多进程 就写成pool.apply_async(func,[args..])就好咯
ps.用pool调的方法 要在方法里用try catch捕获异常,否则出错不会报出来
他告诉我第二个括号里是参数,逗号一定不能省
然而在后来的使用中,发现不写这个,形如pool.apply_async(func,(x,y)) 也不会错
也就渐渐认为他在胡说,后面要不需要有逗号
然而今天调试共享变量,用到了pool.apply_async(func,(x,)) 发现进程池莫名其妙的完全失效
短短十行 调了半个晚上都不懂怎么会错了
百度了下pool的相关文章,发现后面传参用 [ ] 就可以
于是恍然大悟
其实他跟我讲的是只有一个参数的写法,把list写成了tuple,
但是定义tuple时如果只有一个元素,则必须加逗号,否则会产生歧义(括号表示元组还是单纯的括号),此时元组会退化成该单个元素本身
好吧……所以他坑了我一小下,而我也一直也稀里糊涂的这么用了
所以结论就是以后用多进程 就写成pool.apply_async(func,[args..])就好咯
ps.用pool调的方法 要在方法里用try catch捕获异常,否则出错不会报出来
相关文章推荐
- Python核心数据类型——列表与字典
- python 模块化管理,导入自己的模块(包)
- web监控:zabbix自动发现+python之pycur模块对网站访问质量监控
- python多线程编程
- 5.1.2 timedelta对象
- python中的eval函数
- python 一切皆对象
- 基于Python的机器学习实战:AadBoost
- python 小练习之冒泡排序
- python 编码方式总结
- 开篇
- python向数据库插入中文乱码问题
- 机器学习2——python读写excel表格
- Python logging模块详解
- Upgrade to Python 2.7.9 on Ubuntu 14.04 LTS
- Person模拟
- [转]Python的getattr(),setattr(),delattr(),hasattr()
- 学习python 的一个bug
- Python简单进度条示例
- Python编写微信打飞机小游戏(九)