目前个人计算机大都是多核的,但是在运行python程序的时候会发现实际上只有一个核心(CPU)在跑代码,另外几个核心都在偷懒呢,如下图 并行计算的目的是将所有的核心都运行起来以提高代码的执行速度,在python中由于存在全局解释器锁(GIL)如果使用默认的python多线程进行并行计算可能会发现代码的执行速度并不会加快,甚至会比使用但核心要慢!!! 一些并行模块通过修改pyhton的GIL机制突破了这个限制,使得Python在多核电脑中也能够有效的进行并行计算。PP(Parallel Python)模块就是其中一种。 pp模块是python的一个轻量级并行模块,能够有效提高程序运行效率,使用非常方便。 下面这段测试代码是计算从0到给定范围内所有质数的和,即计算0~100000,0~100100,... ,0~100700这8个范围内的所有质数的和:
复制代码 运行效果图: 由于楼主的电脑是伪4核(实际是2核,由于intel使用了超线程把它变成了4核的样子),因此效率只是提高了两倍,不过也还是不错了~ 理论上你的电脑中实际有多少的个核心,通过并行计算就能提高多少被效率(实际的提高倍速会低一点)。 可以看到并行代码只是比串行代码多了几行,然而效率就翻倍了,看到这各位鱼油有木有动心呢 下面就开始正式介绍这个模块了 一:安装 1.从官网下载对应版本的PP模块:http://www.parallelpython.com/content/view/18/32/ 我的系统是Windows,python版本是3.4.4因此选择了下面这个版本 2.在解压目录下打开命令行,输入python setup.py install就自动开始安装了(就是这么简单 ) 二:使用 1.导入模块
复制代码 2.开启服务
复制代码 3.提交任务
复制代码 4.获取结果
复制代码 下面根据之前的测试例子解释下pp模块的使用 子程序
复制代码 主程序
复制代码 第1行:导入pp模块 第2行:开启pp服务,没有填参数表示使用全部核心进行计算 第3行:设定任务,即程序需要计算0~100000,0~100100,... ,0~100700这8个范围内的所有质数的和 第4行:是一个列表推导式,它的作用是将inputs中的值传递给sum_primes,并且执行job_server.submit函数。
复制代码 最后两行:执行完第四行后得到的jobs列表中的每个元素都是一个二元组即(input,func)的形式。这两行的意思就是循环调用func,并打印结果。(通过函数调用的方式获取并行计算结果) 到这里一个使用pp模块进行并行计算的代码就实现了(并行计算就是如此简单 )。 随着任务的需求不同,代码量也会有所变化,不过基本过程就是以上四步。 |
Python 并行计算函数 python并行计算框架
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Python for 并行计算 python函数并行
python如何并行执行两个函数_在python中同时并行化不同的函数
python如何并行执行两个函数 解决方案 传递参数 执行时间 -
springboot日志配置loki
Spring Boot入门样例-110-log日志logback到对应的文件用户的访问我们需要记录,并且将重要或者不重要的进行分类。本demo演示如何使用logback分类记录到对应的日志文件。pox.xml必要的依赖如下,具体参见该项目的pox.xml<dependency> <groupId>org.springframework.boot<
springboot日志配置loki Spring Boot Spring Boot入门 Spring Boot log Spring Boot logback