python由于本身的特质,不能实现真正的多核并行运算,但是有一些第三方库较好地模拟了在多核环境下的并行运算,例如pp包以及multiprocessing,那么哪种更能充分利用多核心呢?

这里我简单做下对比,首先放上结论:multiprocessing是最优秀的。

在实测过程中,我的CPU是4核8线程,multiprocessing能充分利用多核运算优势,使得每一颗CPU核心的负载基本相当,并且能够在8个进程核心上负载相当,总体上占满CPU性能,而pp包只能利用好4颗物理核心,对剩下的4个虚拟核心基本无视。

下面的示例代码,供大家运行参考:

import multiprocessing

import time

import pp

def func(N):

sum = 0

for i in xrange(N):

sum += i

return sum

if __name__ == "__main__":

multiprocessing.freeze_support()

start = time.clock()

for i in xrange(200000):

sum = func(10000)

print ">> normal: ", time.clock()-start

start = time.clock()

pool = multiprocessing.Pool(processes=8)

jobs = []

for i in xrange(200000):

jobs.append(pool.apply_async(func, (10000, )))

pool.close()

pool.join()

print ">> multiprocessing: ", time.clock() - start

start = time.clock()

jobs = []

job_server = pp.Server()

job_server.set_ncpus(8)

for i in xrange(200000):

jobs.append(job_server.submit(func, (10000, )))

job_server.wait()

print ">> pp: ", time.clock() - start

job_server.print_stats()

python多线程库_Python多线程常用包对比相关推荐

  1. python多线程库_python多线程库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点:使 ...

  2. python自动化库_Python自动化测试常用库整理

    基本库: sys 程序和Python解析器的交互 os 启动新进程:操作文件和目录 re 正则表达式,字符串匹配 string 基本字符串操作 inspect 提供自省和反射功能 importlib ...

  3. python信号处理库_Python标准库07 信号 (signal包,部分os包)(转载)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习 ...

  4. Python标准库07 信号 (signal包,部分os包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习 ...

  5. python多线程输出_Python多线程

    多线程基础概念 并行与并发 并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 并发手段 线程:内核空间的调度 进程:内核空间的调度 协程:用户空间的调度 线程可以允 ...

  6. python多线程执行_python多线程实现同时执行两个while循环

    如果想同时执行两个while True循环,可以使用多线程threading来实现. 完整代码 #coding=gbk from time import sleep, ctime import thr ...

  7. 列出5个python标准库_Python常用标准库使用(一)

    自学python一段时间,之前总是学习基本语法,对Python标准库没怎么接触,所以计划从常用的标准库开始,大体了解一遍,下面是学习过程中的笔记. 一.OS模块 主要对目录.或者文件操作.常用方法如下 ...

  8. python线程唤醒_python 多线程

    python 多线程 真正的多线程吗? 对于多核处理器,在同一时间确实可以多个线程独立运行,但在Python中确不是这样的了.原因在于,python虚拟机中引入了GIL这一概念.GIL(Global ...

  9. python线程创建对象_Python多线程编程基础:如何创建线程?

    Python标准库threading中的Thread类用来创建和管理线程对象,支持使用两种方法来创建线程: 1)直接使用Thread类实例化一个线程对象并传递一个可调用对象作为参数: 2)继承Thre ...

最新文章

  1. mysql基础之视图
  2. 对面向接口编程、按分层建项目的反思和新的分层结构思路
  3. Linux下对Verilog文件进行leda检错
  4. leetcode 200. Number of Islands | 200. 岛屿数量(Java)
  5. Win7 路由上网DNS服务器ping不通的解决方法
  6. 在layui中使用 jquery 触发select 的 change事件无效
  7. HarmonyOS分布式软总线研究,【钟洪发老师公开课】实战学习HarmonyOS重点之分布式软总线...
  8. Python风格总结:列表List
  9. 为已经安装nginx添加php模块,安装成功的nginx如何添加未编译安装模块
  10. 如何处理 Kubeadm 搭建的集群证书过期问题
  11. 网络游戏行业按20%的税率缴个人所得税?每百万要上缴20万怎么节税
  12. 快速傅里叶变换(FFT):蝶形算法(CT蝴蝶、GS蝴蝶)
  13. Android多媒体开发框架
  14. java jsp使用flash播放mp4,(jsp/html)网页上嵌入播放器(常用播放器代码整理)
  15. 网络语言上多个C是什么意思,今年流行的网络用语,个个都很有意思,你知道几个呢?...
  16. 深度学习 Day 8——解决GIF生成错误以及有关GAN过程问题
  17. 解决报错 We‘re sorry but doesn‘t work properly without JavaScript enabled. Please enable it to continue.
  18. 【随机过程】作业 5 布朗Brown运动
  19. CentOS磁盘空间爆满问题排查
  20. Plotly中绘制三种经典的股票交易图表(含视频讲解)

热门文章

  1. ALEIDoc EDI(7)--IDoc Extension
  2. 欧锦赛球星谱:帕克领豪阵 诺天王对决加索尔
  3. 看图说话:你不了解的OA与SAP集成
  4. 数字新消费重塑新中部,岳麓峰会再汇“长沙内能”
  5. python封装举例_Python面向对象封装操作案例详解
  6. javaconfig配置mysql_spring cloud config使用mysql存储配置文件
  7. hive substr函数_数据分析工具篇——HQL函数及逻辑
  8. 脚本中的关于‘/xff‘字符记录
  9. 【Python教程】类及对象教程
  10. Python | 除法