python几种并发实现方案的性能比较

python几种并发实现方案的性能比较

ID:8821211

大小:59.79 KB

页数:17页

时间:2018-04-08

python几种并发实现方案的性能比较_第1页
python几种并发实现方案的性能比较_第2页
python几种并发实现方案的性能比较_第3页
python几种并发实现方案的性能比较_第4页
python几种并发实现方案的性能比较_第5页
资源描述:

《python几种并发实现方案的性能比较》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、转自:http://www.elias.cn/Python/PyConcurrency1.前言偶然看到Erlangvs.Stacklesspython:afirstbenchmark,对Erlang和StacklessPython的并发处理性能进行了实验比较,基本结论认为二者有比较相近的性能。我看完产生的问题是,StacklessPython与Python的其他并发实现机制性能又会有多大区别呢,比如线程和进程。因此我采用与这篇文章相同的办法来对StacklessPython、普通Python的thread模块、普通Python的threading模块、普通

2、Python的processing模块这四种并发实现方案进行了性能实验,并将实验过程和基本结果记录在这里。后来看到了基于greenlet实现的高性能网络框架Eventlet,因而更新了实验方案,将greenlet也加入了比较,虽然greenlet并非是一种真正意义上的并发处理,而是在单个线程下对程序块进行切换轮流执行。(EditSection↓)2.实验方案实验方案与Erlangvs.Stacklesspython:afirstbenchmark是相同的,用每种方案分别给出如下问题的实现,记录完成整个处理过程的总时间来作为评判性能的依据:1.由n个节点组成

3、一个环状网络,在上面传送共m个消息。2.将每个消息(共m个),逐个发送给1号节点。3.第1到n-1号节点在接收到消息后,都转发给下一号节点。4.第n号节点每次收到消息后,不再继续转发。5.当m个消息都从1号逐个到达第n号节点时,认为全部处理结束。(EditSection↓)2.1硬件平台MacbookPro3,1上的VmwareFusion1.0虚拟机中,注意这里给虚拟机只启用了cpu的单个核心:·原始Cpu:Core2Duo,2.4GHz,2核心,4MBL2缓存,总线速度800MHz·分配给虚拟机的内存:796M(单个CPU,还能比较并发吗?)(Edit

4、Section↓)2.2软件平台VmwareFusion1.0下的Debianetch:·原始Python:Debian发行版自带Python2.4.4·Python2.4.4Stackless3.1b3060516·processing-0.52-py2.4-linux-i686.egg·原始Python下的greenlet实现:pylib0.9.2(EditSection↓)3.实验过程及结果各方案的实现代码见后文。实验时使用time指令记录每次运行的总时间,选用的都是不做任何输出的no_io实现(Python的print指令还是挺耗资源的,如果不注释

5、掉十有八九得影响测试结果),每次执行时设定n=300,m=10000(Erlangvs.Stacklesspython:afirstbenchmark文章中认为n可以设置为300,m则可以取10000到90000之间的数值分别进行测试)。(EditSection↓)3.1StacklessPython的实验结果real0m1.651suser0m1.628ssys0m0.020s即使将m扩大到30000,实验结果仍然很突出:real0m4.749suser0m4.716ssys0m0.028s(EditSection↓)3.2使用thread模块的实验结果

6、real1m13.009suser0m2.476ssys0m59.028s(EditSection↓)3.3使用threading模块配合Queue模块的实验结果不太稳定,有时候这样:real1m9.222suser0m34.418ssys0m34.622s也有时这样:real2m14.016suser0m6.644ssys2m7.260s(EditSection↓)3.4使用processing模块配合Queue模块的实验结果real3m43.539suser0m15.345ssys3m27.953s(EditSection↓)3.5greenlet模块

7、的实验结果real0m9.225suser0m0.644ssys0m8.581s(EditSection↓)3.6eventlet模块的实验结果注意!eventlet的这个实验结果是后来增补的,硬件平台没变,但是是直接在OSX自带Python2.5环境下执行出来的,同时系统中还有Firefox等很多程序也在争夺系统资源。因此只能作为大致参考,不能与其他几组数据作直接对比。(其中eventlet的版本是0.9.5)real0m21.610suser0m20.713ssys0m0.215s(EditSection↓)4.结论与分析(EditSection↓)4

8、.1StacklessPython毫无疑问,StacklessPy

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。