python高级编程
2016-06-27 13:01
323 查看
Python的GIL会阻止python代码同时在多个CPU上运行。为了实现并发,我们可以使用不受限于GIL的模块开发,
对于计算密集型程序来说,可以使用multiprocessing模块实现并发;对于I/O密集型程序来说,既可以使用multiprocessing,也可以使用threading或concurrent.futures模块来实现并发。
过于接近底层的并发的API容易导致错误,为了避免这一点,可以不使用显式锁(explicit lock)而使用python的quue及multiprocessing模块,这些模块提供了封装程度高的队列结构,另一方面也可以使用concurrent.futures。
增强性能:
使用pypy这款jit编译器给python加速;
使用C语言写成的模块,如array和numpy来处理数组;
使用cProfile来分析性能瓶颈;
对于已经又C/C++实现好了的或是任何符合“C语言调用约定”(c calling convention)的模块,可以从pypi.python.org找到它们;
以上的模块在pypi找不到时,可以用ctypes模块或者第三方Cython包来调用C程序库;
对于计算密集型程序来说,可以使用multiprocessing模块实现并发;对于I/O密集型程序来说,既可以使用multiprocessing,也可以使用threading或concurrent.futures模块来实现并发。
过于接近底层的并发的API容易导致错误,为了避免这一点,可以不使用显式锁(explicit lock)而使用python的quue及multiprocessing模块,这些模块提供了封装程度高的队列结构,另一方面也可以使用concurrent.futures。
增强性能:
使用pypy这款jit编译器给python加速;
使用C语言写成的模块,如array和numpy来处理数组;
使用cProfile来分析性能瓶颈;
对于已经又C/C++实现好了的或是任何符合“C语言调用约定”(c calling convention)的模块,可以从pypi.python.org找到它们;
以上的模块在pypi找不到时,可以用ctypes模块或者第三方Cython包来调用C程序库;
相关文章推荐
- gensim实现python对word2vec的训练和计算
- python 参数的组合
- python 模块概述
- python 函数的参数
- Python(3)
- python环境搭建
- Mini-project #4 - Pong
- python迭代器itertools
- Python线程指南
- python selenium 界面截图
- 梅森尼数
- python小脚本
- 【Python学习日记】匿名函数
- Yixiaohan---005题,更改目录下所有图片的分辨率
- python3.x执行post请求时报错“POST data should be bytes or an iterable of bytes...”的解决方法
- Python(八)进程、线程、协程篇
- Python遍历文件夹
- Python(2)
- Python教程之全局变量用法
- Python3内置函数实例解析