起因

Python处理一下数据,大概有六七个G,然后再存到另外一个文件中,单线程跑起来发现太慢了,数据总量大概是千万行的级别,然后每秒钟只能处理不到20行……遂想怎么提高一下速度

尝试1-multiprocessing

代码如下:

from multiprocessing.dummy import Pool as ThreadPoolpool = ThreadPool(20)
pool.map(func_name, args)
pool.close()
pool.join()

这里参考了这篇文章,然后尝试了一下,发现速度并没有多少提示,看了一下资源使用率,只占满了1个核,不能满足要求

尝试2-dask

dask是一个用于大规模数据存储与读取、并行计算的库,项目地址:https://github.com/dask

代码如下:

from dask import delayedimport dask.bag as db
L = []
for fn in encrypt_files:b = db.read_text(fn)a = delayed(decrypt_file)(fn)          # Delay execution of functionL.append(a)
result = delayed(L)
result.compute()

这个地方参考了这篇文章,但是尝试了一下,还是只跑了一个核,依然失败

尝试3-pp

pp也是并行计算的库,项目地址:http://www.parallelpython.com/

代码如下:

cpu_num = 1
job_server = pp.Server(cpu_num)
a =  []
for f in fn:a.append(job_server.submit(fun_name, (f, ), (fun_1, fun_2, ), ('sys', 'datetime', 'pp', )))
for x in a:
tmp = x()

这里参考这篇文章,测试了一下,可以跑满多个核心,其使用的CPU核心数量就是设定的那个数量。

但是也存在一个问题,就是程序跑一段时间后就会效率下降,监控一下CPU发现也只剩下一个核心在跑了,目前还不知道是什么原因,也没有深究

对比

平时最常有的应该是multiprocessing模块,网上的资料大多也都是这个,做数据分析的可能dask模块会用到,pp模块就更少了。但是实际上在我这里测试,前两者达不到我的要求,其最多也跑了一个核心,不知道是不是我代码使用的问题。

至于pp模块,需要注意的是全局变量的定义,可能需要在函数里重新定义,不然可能会提示变量未定义的错误。

过程

开始尝试的时候效果不尽人意,在v2ex上问了一下大家,可以围观下面这两个帖子:

  • https://www.v2ex.com/t/393060
  • https://www.v2ex.com/t/392983

其实最终也没有达到我的要求,还存在着一部分问题,可能最终还是需要靠集群去实现这个方案。

感想

围观v2的帖子,发现其实找出瓶颈才是最关键的…最终发现我的瓶颈是在处理数据的部分,RSA解密太耗时了,然后就应该考虑怎么提高这部分效率。

有人说换语言,实际上提高十倍也并不满足这个要求,可能提高十倍效率同时使用多核心可以满足…这个时候就该考虑换个思路了

比方说用集群(还未实现),或则说直接换语言,同时跑多核心。

PS

感谢各位热心网友

Python处理大数据相关推荐

  1. pythonppt教材_PPT、H5、Python、大数据……浙江中小学新教材9月投入使用!

    今年9月的新学期,浙江三到九年级信息技术课将替换新教材.消息一出,引起浙江学生家长的关注. 其中最大的变化是,八年级将新增Python课程内容.新高一信息技术编程语言由VB替换为Python,大数据. ...

  2. python大数据分析实例-如何用Python分析大数据(以Twitter数据挖掘为例)

    原标题:如何用Python分析大数据(以Twitter数据挖掘为例) 来源:艾翻译(http://www.itran.cc/) 原文标题:Twitter Data Mining: A Guide to ...

  3. 财务大数据比赛有python吗-Python 适合大数据量的处理吗?

    我很喜欢用python,用python处理数据是家常便饭,从事的工作涉及nlp,算法,推荐,数据挖掘,数据清洗,数据量级从几十k到几T不等,我来说说吧 百万级别数据是小数据,python处理起来不成问 ...

  4. python处理excel大数据-Python实现大数据收集至excel的思路详解

    一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...

  5. python能处理多大的数据-Python 适合大数据量的处理吗?

    python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 王守崑,推荐系统,数据挖掘 需要澄清两点之后才可以比较全面的看这个问题: ...

  6. python做大数据的框架_Python+大数据计算平台,PyODPS架构手把手教你搭建

    原文链接:http://click.aliyun.com/m/13965/ 在2016年10月的云栖社区在线培训上,来自阿里云大数据事业部的秦续业分享了<双剑合壁--Python和大数据计算平台 ...

  7. 【Python开发】Python 适合大数据量的处理吗?

    Python 适合大数据量的处理吗? python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 需要澄清两点之后才可以比较全面的看这 ...

  8. python开发转行做数据分析_转行学IT,Java、Python、大数据选择学哪个发展好?

    对薪资不满意.担心自己以后不好找工作,不少人都会选择参加培训,转行IT行业.当然很多想要转行IT的人,都会犹豫选择哪门编程语言学习比较好,Python.Java.大数据作为比较热门行业技术,不少人都很 ...

  9. 基于python的分布式扫描器_一种基于python的大数据分布式任务处理装置的制作方法...

    本发明涉及数据处理技术,具体是一种基于python的大数据分布式任务处理装置. 背景技术: 本发明提供一种分布式队列任务处理方案和装置,该方法可以提供分布式处理python任务,任务类型包括爬虫及其他 ...

  10. python 写入excel 日期_详解:Python实现大数据收集至excel的思路大牛分享(建议收藏)...

    一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...

最新文章

  1. Ubuntu12.04安装Mac OSX Yosemite
  2. Oracle 原理: 数据类型
  3. php如何定义和使用常量,如何在PHP中定义和使用常量
  4. influxdb tsm文件_Influxdb中的Compaction操作
  5. 个人觉得好的文章链接推荐【转载,侵权立删】
  6. e300氛围灯哪里调节_让快乐来得更简单!体验新宝骏E300/E300 PLUS
  7. 信息学奥赛一本通(1062:最高的分数)
  8. Java中的新生代、老年代和永久代
  9. 36. LatencyTOP
  10. 闭环计算机控制系统的例子,自动控制的举例_自动控制的例子_开环和闭环自动控制系统举例...
  11. 在线演示(动画演示)各种算法的实现过程
  12. proteus 直流可调稳压电源
  13. DynDNS免费动态域名解析
  14. PHP获取数组第一个元素和最后一个元素
  15. NOD32杀毒软件升级ID
  16. 张飞硬件第二章笔记(二)
  17. AS打包V1和V2签名,使用乐固加固安装包签名有误 ShieldCode = 40186
  18. IMS 注册流程最新
  19. 成都2019年大庙会“小喜神”新鲜出炉
  20. 【操作系统】操作系统极速入门

热门文章

  1. 2.10. 代码片段:demo方法(Core Data 应用程序实践指南)
  2. Windows 2008下安装配置 WDS Windows部署服务
  3. 程序员的爱情 第六章
  4. 【Azure Services Platform Step by Step-第1篇】INTRODUCING THE AZURE SERVICES PLATFORM
  5. 【VIOLA】宁可食无肉,不可居无竹
  6. windows server系统,登录系统提示按下 ctrl+alt+delete
  7. 省掉1/3的回归测试:Facebook用机器学习自动选择测试策略
  8. 互联网+创新时代,“智慧工地”助力武汉城市建设!
  9. PHPUnit单元测试 - 我看过的PHP开源框架
  10. 一些关于反汇编与逆向方面的博文分享