Python multiprocessing需要避免的陷阱
来源:互联网 发布:学游泳费用 知乎 编辑:程序博客网 时间:2024/06/05 10:44
这段代码可以在Mac上正常运行(windows不行)
# build.pyfrom multiprocessing import Poolimport tracebackdef f(x): print 'start pool.f' return x*xdef run(): for line in traceback.format_stack(): print(line.strip()) print 'start pool.run' pool = Pool(processes=1) print 'start pool.map' print pool.map(f, range(10))run()
最终输出
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
但是,如果通过下面的代码运行,程序就会死掉
# jenkins.pyimport buildprint "doesn't run this line at all. the program is hanging in import"build.run()build.f()build.inexist_fuction("the function doesn't exist, python doesn't have chance to check it")
原因如下
#1 build.py中的run是top level的语句,当jenkins.py import build.py的时候,run被执行
#2 在官方文档中https://docs.python.org/2/library/multiprocessing.html有这么一个要求
Functionality within this package requires that the __main__
module be importable by the children.
在#1所描述的运行状态下,上述要求不成立
解决办法:
在build.py中不要run放到main中
0 0
- Python multiprocessing需要避免的陷阱
- python 使用multiprocessing需要注意的问题
- 给创始人的建议:需要避免的常见创业陷阱
- python的multiprocessing.Process
- python 2.6 multiprocessing 的使用
- Python的multiprocessing连接池
- python基础:multiprocessing的使用
- python multiprocessing
- python multiprocessing
- Python--multiprocessing
- python multiprocessing
- Python multiprocessing
- Python multiprocessing
- python-multiprocessing
- python的threading和multiprocessing模块初探
- python的threading和multiprocessing模块初探
- python的threading和multiprocessing模块初探
- python的threading和multiprocessing模块初探
- Android 4.4 屏幕旋转
- 通过 itms:services://? 在线安装ipa ,跨过app-store
- 一个基于UIViewController的高度自定义TabBarController
- 四元数 旋转 旋转矩阵 欧拉角互相转换
- Http响应码
- Python multiprocessing需要避免的陷阱
- 深度解读谷歌SyntaxNet:全新TensorFlow自然语言处理模型
- IOS 调用照相机、相册功能
- ntohs, ntohl, htons,htonl的比较和详解
- Codeforces732D Exams
- java反射学习例子
- tomcat
- LeetCode342. Power of Four 简单解法
- LINUX --- 大内核(顺序阅读一)