Python处理大数据
起因
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处理大数据相关推荐
- pythonppt教材_PPT、H5、Python、大数据……浙江中小学新教材9月投入使用!
今年9月的新学期,浙江三到九年级信息技术课将替换新教材.消息一出,引起浙江学生家长的关注. 其中最大的变化是,八年级将新增Python课程内容.新高一信息技术编程语言由VB替换为Python,大数据. ...
- python大数据分析实例-如何用Python分析大数据(以Twitter数据挖掘为例)
原标题:如何用Python分析大数据(以Twitter数据挖掘为例) 来源:艾翻译(http://www.itran.cc/) 原文标题:Twitter Data Mining: A Guide to ...
- 财务大数据比赛有python吗-Python 适合大数据量的处理吗?
我很喜欢用python,用python处理数据是家常便饭,从事的工作涉及nlp,算法,推荐,数据挖掘,数据清洗,数据量级从几十k到几T不等,我来说说吧 百万级别数据是小数据,python处理起来不成问 ...
- python处理excel大数据-Python实现大数据收集至excel的思路详解
一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...
- python能处理多大的数据-Python 适合大数据量的处理吗?
python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 王守崑,推荐系统,数据挖掘 需要澄清两点之后才可以比较全面的看这个问题: ...
- python做大数据的框架_Python+大数据计算平台,PyODPS架构手把手教你搭建
原文链接:http://click.aliyun.com/m/13965/ 在2016年10月的云栖社区在线培训上,来自阿里云大数据事业部的秦续业分享了<双剑合壁--Python和大数据计算平台 ...
- 【Python开发】Python 适合大数据量的处理吗?
Python 适合大数据量的处理吗? python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 需要澄清两点之后才可以比较全面的看这 ...
- python开发转行做数据分析_转行学IT,Java、Python、大数据选择学哪个发展好?
对薪资不满意.担心自己以后不好找工作,不少人都会选择参加培训,转行IT行业.当然很多想要转行IT的人,都会犹豫选择哪门编程语言学习比较好,Python.Java.大数据作为比较热门行业技术,不少人都很 ...
- 基于python的分布式扫描器_一种基于python的大数据分布式任务处理装置的制作方法...
本发明涉及数据处理技术,具体是一种基于python的大数据分布式任务处理装置. 背景技术: 本发明提供一种分布式队列任务处理方案和装置,该方法可以提供分布式处理python任务,任务类型包括爬虫及其他 ...
- python 写入excel 日期_详解:Python实现大数据收集至excel的思路大牛分享(建议收藏)...
一.在工程目录中新建一个excel文件 二.使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询 三.以下code内容为:实现从接口获取到的数据值写入 ...
最新文章
- Ubuntu12.04安装Mac OSX Yosemite
- Oracle 原理: 数据类型
- php如何定义和使用常量,如何在PHP中定义和使用常量
- influxdb tsm文件_Influxdb中的Compaction操作
- 个人觉得好的文章链接推荐【转载,侵权立删】
- e300氛围灯哪里调节_让快乐来得更简单!体验新宝骏E300/E300 PLUS
- 信息学奥赛一本通(1062:最高的分数)
- Java中的新生代、老年代和永久代
- 36. LatencyTOP
- 闭环计算机控制系统的例子,自动控制的举例_自动控制的例子_开环和闭环自动控制系统举例...
- 在线演示(动画演示)各种算法的实现过程
- proteus 直流可调稳压电源
- DynDNS免费动态域名解析
- PHP获取数组第一个元素和最后一个元素
- NOD32杀毒软件升级ID
- 张飞硬件第二章笔记(二)
- AS打包V1和V2签名,使用乐固加固安装包签名有误 ShieldCode = 40186
- IMS 注册流程最新
- 成都2019年大庙会“小喜神”新鲜出炉
- 【操作系统】操作系统极速入门
热门文章
- 2.10. 代码片段:demo方法(Core Data 应用程序实践指南)
- Windows 2008下安装配置 WDS Windows部署服务
- 程序员的爱情 第六章
- 【Azure Services Platform Step by Step-第1篇】INTRODUCING THE AZURE SERVICES PLATFORM
- 【VIOLA】宁可食无肉,不可居无竹
- windows server系统,登录系统提示按下 ctrl+alt+delete
- 省掉1/3的回归测试:Facebook用机器学习自动选择测试策略
- 互联网+创新时代,“智慧工地”助力武汉城市建设!
- PHPUnit单元测试 - 我看过的PHP开源框架
- 一些关于反汇编与逆向方面的博文分享