Python爬虫可以爬取的东西有很多,Python爬虫怎么学?简单的分析下:
如果你仔细观察,就不难发现,懂爬虫、学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得简单、容易上手。
利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如:
知乎:爬取优质答案,为你筛选出各话题下最优质的内容。
淘宝、京东:抓取商品、评论及销量数据,对各种商品及用户的消费场景进行分析。
安居客、链家:抓取房产买卖及租售信息,分析房价变化趋势、做不同区域的房价分析。
拉勾网、智联:爬取各类职位信息,分析各行业人才需求情况及薪资水平。
雪球网:抓取雪球高回报用户的行为,对股票市场进行分析和预测。
爬虫是入门Python最好的方式,没有之一。Python有很多应用的方向,比如后台开发、web开发、科学计算等等,但爬虫对于初学者而言更友好,原理简单,几行代码就能实现基本的爬虫,学习的过程更加平滑,你能体会更大的成就感。
掌握基本的爬虫后,你再去学习Python数据分析、web开发甚至机器学习,都会更得心应手。因为这个过程中,Python基本语法、库的使用,以及如何查找文档你都非常熟悉了。
对于小白来说,爬虫可能是一件非常复杂、技术门槛很高的事情。比如有人认为学爬虫必须精通 Python,然后哼哧哼哧系统学习 Python 的每个知识点,很久之后发现仍然爬不了数据;有的人则认为先要掌握网页的知识,遂开始 HTMLCSS,结果入了前端的坑,瘁……
但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现,但建议你从一开始就要有一个具体的目标。
在目标的驱动下,你的学习才会更加精准和高效。那些所有你认为必须的前置知识,都是可以在完成目标的过程中学到的。这里给你一条平滑的、零基础快速入门的学习路径。
1学习 Python 包并实现基本的爬虫过程
2了解非结构化数据的存储
3学习scrapy,搭建工程化爬虫
4学习数据库知识,应对大规模数据存储与提取
5掌握各种技巧,应对特殊网站的反爬措施
6分布式爬虫,实现大规模并发采集,提升效率
一
学习 Python 包并实现基本的爬虫过程
大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。
Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。
如果你用过 BeautifulSoup,会发现 Xpath 要省事不少,一层一层检查元素代码的工作,全都省略了。这样下来基本套路都差不多,一般的静态网站根本不在话下,豆瓣、糗事百科、腾讯新闻等基本上都可以上手了。
当然如果你需要爬取异步加载的网站,可以学习浏览器抓包分析真实请求或者学习Selenium来实现自动化,这样,知乎、时光网、猫途鹰这些动态的网站也可以迎刃而解。
二
了解非结构化数据的存储
爬回来的数据可以直接用文档形式存在本地,也可以存入数据库中。
开始数据量不大的时候,你可以直接通过 Python 的语法或 pandas 的方法将数据存为csv这样的文件。
当然你可能发现爬回来的数据并不是干净的,可能会有缺失、错误等等,你还需要对数据进行清洗,可以学习 pandas 包的基本用法来做数据的预处理,得到更干净的数据。
三
学习 scrapy,搭建工程化的爬虫
掌握前面的技术一般量级的数据和代码基本没有问题了,但是在遇到非常复杂的情况,可能仍然会力不从心,这个时候,强大的 scrapy 框架就非常有用了。
scrapy 是一个功能非常强大的爬虫框架,它不仅能便捷地构建request,还有强大的 selector 能够方便地解析 response,然而它最让人惊喜的还是它超高的性能,让你可以将爬虫工程化、模块化。
学会 scrapy,你可以自己去搭建一些爬虫框架,你就基本具备爬虫工程师的思维了。
四
学习数据库基础,应对大规模数据存储
爬回来的数据量小的时候,你可以用文档的形式来存储,一旦数据量大了,这就有点行不通了。所以掌握一种数据库是必须的,学习目前比较主流的 MongoDB 就OK。
MongoDB 可以方便你去存储一些非结构化的数据,比如各种评论的文本,的链接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。
因为这里要用到的数据库知识其实非常简单,主要是数据如何入库、如何进行提取,在需要的时候再学习就行。
五
掌握各种技巧,应对特殊网站的反爬措施
当然,爬虫过程中也会经历一些绝望啊,比如被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。
遇到这些反爬虫的手段,当然还需要一些高级的技巧来应对,常规的比如访问频率控制、使用代理IP池、抓包、验证码的OCR处理等等。
往往网站在高效开发和反爬虫之间会偏向前者,这也为爬虫提供了空间,掌握这些应对反爬虫的技巧,绝大部分的网站已经难不到你了
六
分布式爬虫,实现大规模并发采集
爬取基本数据已经不是问题了,你的瓶颈会集中到爬取海量数据的效率。这个时候,相信你会很自然地接触到一个很厉害的名字:分布式爬虫。
分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具。
Scrapy 前面我们说过了,用于做基本的页面爬取,MongoDB 用于存储爬取的数据,Redis 则用来存储要爬取的网页队列,也就是任务队列。
所以有些东西看起来很吓人,但其实分解开来,也不过如此。当你能够写分布式的爬虫的时候,那么你可以去尝试打造一些基本的爬虫架构了,实现一些更加自动化的数据获取。
你看,这一条学习路径下来,你已然可以成为老司机了,非常的顺畅。所以在一开始的时候,尽量不要系统地去啃一些东西,找一个实际的项目(开始可以从豆瓣、小猪这种简单的入手),直接开始就好。
因为爬虫这种技术,既不需要你系统地精通一门语言,也不需要多么高深的数据库技术,高效的姿势就是从实际的项目中去学习这些零散的知识点,你能保证每次学到的都是最需要的那部分。
当然唯一麻烦的是,在具体的问题中,如何找到具体需要的那部分学习资源、如何筛选和甄别,是很多初学者面临的一个大问题。
以上就是我的回答,希望对你有所帮助,望采纳。
大数据技术包括数据收集、数据存取、基础架构、数据处理、统计分析、数据挖掘、模型预测、结果呈现。
1、数据收集:在大数据的生命周期中,数据采集处于第一个环节。根据MapReduce产生数据的应用系统分类,大数据的采集主要有4种来源:管理信息系统、Web信息系统、物理信息系统、科学实验系统。
2、数据存取:大数据的存去采用不同的技术路线,大致可以分为3类。第1类主要面对的是大规模的结构化数据。第2类主要面对的是半结构化和非结构化数据。第3类面对的是结构化和非结构化混合的大数据,
3、基础架构:云存储、分布式文件存储等。
4、数据处理:对于采集到的不同的数据集,可能存在不同的结构和模式,如文件、XML 树、关系表等,表现为数据的异构性。对多个异构的数据集,需要做进一步集成处理或整合处理,将来自不同数据集的数据收集、整理、清洗、转换后,生成到一个新的数据集,为后续查询和分析处理提供统一的数据视图。
5、统计分析:假设检验、显著性检验、差异分析、相关分析、T检验、方差分析、卡方分析、偏相关分析、距离分析、回归分析、简单回归分析、多元回归分析、逐步回归、回归预测与残差分析、岭回归、logistic回归分析、曲线估计、因子分析、聚类分析、主成分分析、因子分析、快速聚类法与聚类法、判别分析、对应分析、多元对应分析(最优尺度分析)、bootstrap技术等等。
6、数据挖掘:目前,还需要改进已有数据挖掘和机器学习技术;开发数据网络挖掘、特异群组挖掘、图挖掘等新型数据挖掘技术;突破基于对象的数据连接、相似性连接等大数据融合技术;突破用户兴趣分析、网络行为分析、情感语义分析等面向领域的大数据挖掘技术。
7、模型预测:预测模型、机器学习、建模仿真。
8、结果呈现:云计算、标签云、关系图等。
人工智能技术关系到人工智能产品是否可以顺利应用到我们的生活场景中。在人工智能领域,它普遍包含了机器学习、知识图谱、自然语言处理、人机交互、计算机视觉、生物特征识别、AR/VR七个关键技术。
一、机器学习
机器学习(MachineLearning)是一门涉及统计学、系统辨识、逼近理论、神经网络、优化理论、计算机科学、脑科学等诸多领域的交叉学科,研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,是人工智能技术的核心。基于数据的机器学习是现代智能技术中的重要方法之一,研究从观测数据(样本)出发寻找规律,利用这些规律对未来数据或无法观测的数据进行预测。根据学习模式、学习方法以及算法的不同,机器学习存在不同的分类方法。
根据学习模式将机器学习分类为监督学习、无监督学习和强化学习等。
根据学习方法可以将机器学习分为传统机器学习和深度学习。
二、知识图谱
知识图谱本质上是结构化的语义知识库,是一种由节点和边组成的图数据结构,以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体—关系—实体”三元组,以及实体及其相关“属性—值”对。不同实体之间通过关系相互联结,构成网状的知识结构。在知识图谱中,每个节点表示现实世界的“实体”,每条边为实体与实体之间的“关系”。通俗地讲,知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络,提供了从“关系”的角度去分析问题的能力。
知识图谱可用于反欺诈、不一致性验证、组团欺诈等公共安全保障领域,需要用到异常分析、静态分析、动态分析等数据挖掘方法。特别地,知识图谱在搜索引擎、可视化展示和精准营销方面有很大的优势,已成为业界的热门工具。但是,知识图谱的发展还有很大的挑战,如数据的噪声问题,即数据本身有错误或者数据存在冗余。随着知识图谱应用的不断深入,还有一系列关键技术需要突破。
三、自然语言处理
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向,研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,涉及的领域较多,主要包括机器翻译、机器阅读理解和问答系统等。
机器翻译
机器翻译技术是指利用计算机技术实现从一种自然语言到另外一种自然语言的翻译过程。基于统计的机器翻译方法突破了之前基于规则和实例翻译方法的局限性,翻译性能取得巨大提升。基于深度神经网络的机器翻译在日常口语等一些场景的成功应用已经显现出了巨大的潜力。随着上下文的语境表征和知识逻辑推理能力的发展,自然语言知识图谱不断扩充,机器翻译将会在多轮对话翻译及篇章翻译等领域取得更大进展。
语义理解
语义理解技术是指利用计算机技术实现对文本篇章的理解,并且回答与篇章相关问题的过程。语义理解更注重于对上下文的理解以及对答案精准程度的把控。随着MCTest数据集的发布,语义理解受到更多关注,取得了快速发展,相关数据集和对应的神经网络模型层出不穷。语义理解技术将在智能客服、产品自动问答等相关领域发挥重要作用,进一步提高问答与对话系统的精度。
问答系统
问答系统分为开放领域的对话系统和特定领域的问答系统。问答系统技术是指让计算机像人类一样用自然语言与人交流的技术。人们可以向问答系统提交用自然语言表达的问题,系统会返回关联性较高的答案。尽管问答系统目前已经有了不少应用产品出现,但大多是在实际信息服务系统和智能手机助手等领域中的应用,在问答系统鲁棒性方面仍然存在着问题和挑战。
自然语言处理面临四大挑战:
一是在词法、句法、语义、语用和语音等不同层面存在不确定性;
二是新的词汇、术语、语义和语法导致未知语言现象的不可预测性;
三是数据资源的不充分使其难以覆盖复杂的语言现象;
四是语义知识的模糊性和错综复杂的关联性难以用简单的数学模型描述,语义计算需要参数庞大的非线性计算
四、人机交互
人机交互主要研究人和计算机之间的信息交换,主要包括人到计算机和计算机到人的两部分信息交换,是人工智能领域的重要的外围技术。人机交互是与认知心理学、人机工程学、多媒体技术、虚拟现实技术等密切相关的综合学科。传统的人与计算机之间的信息交换主要依靠交互设备进行,主要包括键盘、鼠标、操纵杆、数据服装、眼动跟踪器、位置跟踪器、数据手套、压力笔等输入设备,以及打印机、绘图仪、显示器、头盔式显示器、音箱等输出设备。人机交互技术除了传统的基本交互和图形交互外,还包括语音交互、情感交互、体感交互及脑机交互等技术。
五、计算机视觉
计算机视觉是使用计算机模仿人类视觉系统的科学,让计算机拥有类似人类提取、处理、理解和分析图像以及图像序列的能力。自动驾驶、机器人、智能医疗等领域均需要通过计算机视觉技术从视觉信号中提取并处理信息。近来随着深度学习的发展,预处理、特征提取与算法处理渐渐融合,形成端到端的人工智能算法技术。根据解决的问题,计算机视觉可分为计算成像学、图像理解、三维视觉、动态视觉和视频编解码五大类。
目前,计算机视觉技术发展迅速,已具备初步的产业规模。未来计算机视觉技术的发展主要面临以下挑战:
一是如何在不同的应用领域和其他技术更好的结合,计算机视觉在解决某些问题时可以广泛利用大数据,已经逐渐成熟并且可以超过人类,而在某些问题上却无法达到很高的精度;
二是如何降低计算机视觉算法的开发时间和人力成本,目前计算机视觉算法需要大量的数据与人工标注,需要较长的研发周期以达到应用领域所要求的精度与耗时;
三是如何加快新型算法的设计开发,随着新的成像硬件与人工智能芯片的出现,针对不同芯片与数据采集设备的计算机视觉算法的设计与开发也是挑战之一。
六、生物特征识别
生物特征识别技术是指通过个体生理特征或行为特征对个体身份进行识别认证的技术。从应用流程看,生物特征识别通常分为注册和识别两个阶段。注册阶段通过传感器对人体的生物表征信息进行采集,如利用图像传感器对指纹和人脸等光学信息、麦克风对说话声等声学信息进行采集,利用数据预处理以及特征提取技术对采集的数据进行处理,得到相应的特征进行存储。
识别过程采用与注册过程一致的信息采集方式对待识别人进行信息采集、数据预处理和特征提取,然后将提取的特征与存储的特征进行比对分析,完成识别。从应用任务看,生物特征识别一般分为辨认与确认两种任务,辨认是指从存储库中确定待识别人身份的过程,是一对多的问题;确认是指将待识别人信息与存储库中特定单人信息进行比对,确定身份的过程,是一对一的问题。
生物特征识别技术涉及的内容十分广泛,包括指纹、掌纹、人脸、虹膜、指静脉、声纹、步态等多种生物特征,其识别过程涉及到图像处理、计算机视觉、语音识别、机器学习等多项技术。目前生物特征识别作为重要的智能化身份认证技术,在金融、公共安全、教育、交通等领域得到广泛的应用。
七、VR/AR
虚拟现实(VR)/增强现实(AR)是以计算机为核心的新型视听技术。结合相关科学技术,在一定范围内生成与真实环境在视觉、听觉、触感等方面高度近似的数字化环境。用户借助必要的装备与数字化环境中的对象进行交互,相互影响,获得近似真实环境的感受和体验,通过显示设备、跟踪定位设备、触力觉交互设备、数据获取设备、专用芯片等实现。
虚拟现实/增强现实从技术特征角度,按照不同处理阶段,可以分为获取与建模技术、分析与利用技术、交换与分发技术、展示与交互技术以及技术标准与评价体系五个方面。获取与建模技术研究如何把物理世界或者人类的创意进行数字化和模型化,难点是三维物理世界的数字化和模型化技术;分析与利用技术重点研究对数字内容进行分析、理解、搜索和知识化方法,其难点是在于内容的语义表示和分析;交换与分发技术主要强调各种网络环境下大规模的数字化内容流通、转换、集成和面向不同终端用户的个性化服务等,其核心是开放的内容交换和版权管理技术;展示与交换技术重点研究符合人类习惯数字内容的各种显示技术及交互方法,以期提高人对复杂信息的认知能力,其难点在于建立自然和谐的人机交互环境;标准与评价体系重点研究虚拟现实/增强现实基础资源、内容编目、信源编码等的规范标准以及相应的评估技术。
目前虚拟现实/增强现实面临的挑战主要体现在智能获取、普适设备、自由交互和感知融合四个方面。在硬件平台与装置、核心芯片与器件、软件平台与工具、相关标准与规范等方面存在一系列科学技术问题。总体来说虚拟现实/增强现实呈现虚拟现实系统智能化、虚实环境对象无缝融合、自然交互全方位与舒适化的发展趋势
本教程将使您了解如何使用 Python 的 Scikit-learn 包构建和评估朴素贝叶斯分类器。
假设您是产品经理,您想将客户评论分为正面和负面类别。 或者作为贷款经理,您想确定哪些贷款申请人是安全的还是有风险的? 作为医疗保健分析师,您希望预测哪些患者可能患有糖尿病。 所有示例都存在对评论、贷款申请人和患者进行分类的相同问题。
朴素贝叶斯是最直接、最快速的分类算法,适用于大量数据。 朴素贝叶斯分类器成功地用于各种应用,例如垃圾邮件过滤、文本分类、 情感 分析和推荐系统。 它使用贝叶斯概率定理来预测未知类。
在本教程中,您将了解以下所有内容:
无论何时执行分类,第一步都是了解问题并识别潜在的特征和标签。 特征是影响标签结果的那些特征或属性。 例如,在贷款分配的情况下,银行经理确定客户的职业、收入、年龄、地点、以前的贷款 历史 、交易 历史 和信用评分。 这些特征被称为帮助模型对客户进行分类的特征。
分类有两个阶段,学习阶段和评估阶段。 在学习阶段,分类器在给定的数据集上训练其模型,在评估阶段,它测试分类器的性能。 性能是根据各种参数进行评估的,例如准确度、误差、精度和召回率。
2 什么是朴素贝叶斯分类器?
朴素贝叶斯是一种基于贝叶斯定理的统计分类技术。 它是最简单的监督学习算法之一。 朴素贝叶斯分类器是一种快速、准确和可靠的算法。 朴素贝叶斯分类器在大型数据集上具有很高的准确性和速度。
朴素贝叶斯分类器假设类中特定特征的效果独立于其他特征 。 例如,贷款申请人是否可取取决于他/她的收入、以前的贷款和交易 历史 、年龄和位置。 即使这些特征相互依赖,这些特征仍然被独立考虑 。 这个假设简化了计算,这就是为什么它被认为是“朴素”的。 这种假设称为类条件独立 。
此节涉及大量线性代数与概率的知识,对理论研究有高要求的读者可参考更专业的书籍,只关心如何应用的读者可以跳过此节。我也只关心应用,因此,咱们一起跳过此节吧。留个标题只为结构完整性。哈哈哈 希望数学老师原谅我
4 Scikit-learn 中的分类器构建
1)定义数据集
在此示例中,您可以使用具有三列的虚拟数据集:天气、温度和是否出去玩。 前两个是特征(天气、温度),另一个是标签。
2)编码特征
首先,您需要将这些字符串标签转换为数字。 例如:'Overcast', 'Rainy', 'Sunny' as 0, 1, 2。这称为标签编码。 Scikit-learn 提供了 LabelEncoder 库,用于对标签进行编码,其值在 0 到 1 之间,小于离散类的数量。
同样,您也可以对 temp 和 play 列进行编码。
现在将这两个特征(天气和温度)组合在一个变量(元组列表)中。
3)生成模型
在以下步骤中使用朴素贝叶斯分类器生成模型:
这里,1 表示玩家可以“出去玩”。
到目前为止,您已经学习了使用二进制标签的朴素贝叶斯分类。 现在您将了解朴素贝叶斯中的多类分类。 这被称为多项朴素贝叶斯分类。 例如,如果您想对有关技术、 娱乐 、政治或 体育 的新闻文章进行分类。
在模型构建部分,您可以使用葡萄酒数据集,这是一个非常著名的多类分类问题。 “这个数据集是对在意大利同一地区种植但来自三种不同品种的葡萄酒进行化学分析的结果。”
数据集包含 13 个特征(酒精、苹果酸、灰分、alcalinity_of_ash、镁、总酚、黄酮类化合物、非黄酮类酚、原花青素、颜色强度、色调、od280/od315_of_diluted_wines、脯氨酸)和葡萄酒品种类型。 该数据有3种酒类Class_0、Class_1和Class_3。 在这里,您可以建立一个模型来对葡萄酒的类型进行分类。
该数据集在 scikit-learn 库中可用。
1)加载数据
让我们首先从 scikit-learn 数据集中加载所需的 wine 数据集。
2) 探索 数据
您可以打印目标和特征名称,以确保您拥有正确的数据集,如下所示:
稍微 探索 一下您的数据总是不会错的,这样您就知道自己在处理什么。 在这里,您可以看到打印了数据集的前五行,以及整个数据集的目标变量。
3)拆分数据
首先,您将列分为因变量和自变量(或特征和标签)。 然后将这些变量拆分为训练集和测试集。
4)生成模型
拆分后,您将在训练集上生成一个随机森林模型,并对测试集特征进行预测。
5)评估模型
模型生成后,使用实际值和预测值检查准确性。
5 零概率问题
假设数据集中没有风险贷款的元组,在这种情况下,后验概率为零,模型无法做出预测。 这个问题被称为零概率,因为特定类的出现为零。
此类问题的解决方案是拉普拉斯校正(Laplacian correction)或拉普拉斯变换(Laplace Transformation)。 拉普拉斯校正是平滑技术之一。 在这里,您可以假设数据集足够大,每个类添加一行不会对估计的概率产生影响。 这将克服概率值为零的问题。
例如:假设对于有风险的类贷款,数据库中有 1000 个训练元组。 在这个数据库中,收入列有 0 个元组代表低收入,990 个元组代表中等收入,10 个元组代表高收入。 在没有拉普拉斯校正的情况下,这些事件的概率为 0、0990(来自 990/1000)和 0010(来自 10/1000)
现在,对给定的数据集应用拉普拉斯校正。 让我们为每个收入-价值对再添加 1 个元组。 这些事件的概率:
6 优点
在本教程中,您了解了朴素贝叶斯算法、它的工作原理、朴素贝叶斯假设、问题、实现、优点和缺点。 在此过程中,您还学习了 scikit-learn 中二元和多项类的模型构建和评估。
朴素贝叶斯是最直接和最有效的算法。 尽管机器学习在过去几年取得了重大进展,但它已经证明了它的价值。 它已成功部署在从文本分析到推荐引擎的许多应用程序中。
经常需要通过Python代码来提取文本的关键词,用于文本分析。而实际应用中文本量又是大量的数据,如果使用单进程的话,效率会比较低,因此可以考虑使用多进程。
python的多进程只需要使用multiprocessing的模块就行,如果使用大量的进程就可以使用multiprocessing的进程池--Pool,然后不同进程处理时使用apply_async函数进行异步处理即可。
实验测试语料:messagetxt中存放的581行文本,一共7M的数据,每行提取100个关键词。
代码如下:
[python] view plain copy
#coding:utf-8
import sys
reload(sys)
syssetdefaultencoding("utf-8")
from multiprocessing import Pool,Queue,Process
import multiprocessing as mp
import time,random
import os
import codecs
import jiebaanalyse
jiebaanalyseset_stop_words("yy_stop_wordstxt")
def extract_keyword(input_string):
#print("Do task by process {proc}"format(proc=osgetpid()))
tags = jiebaanalyseextract_tags(input_string, topK=100)
#print("key words:{kw}"format(kw=" "join(tags)))
return tags
#def parallel_extract_keyword(input_string,out_file):
def parallel_extract_keyword(input_string):
#print("Do task by process {proc}"format(proc=osgetpid()))
tags = jiebaanalyseextract_tags(input_string, topK=100)
#timesleep(randomrandom())
#print("key words:{kw}"format(kw=" "join(tags)))
#o_f = open(out_file,'w')
#o_fwrite(" "join(tags)+"\n")
return tags
if __name__ == "__main__":
data_file = sysargv[1]
with codecsopen(data_file) as f:
lines = freadlines()
fclose()
out_put = data_filesplit('')[0] +"_tagstxt"
t0 = timetime()
for line in lines:
parallel_extract_keyword(line)
#parallel_extract_keyword(line,out_put)
#extract_keyword(line)
print("串行处理花费时间{t}"format(t=timetime()-t0))
pool = Pool(processes=int(mpcpu_count()07))
t1 = timetime()
#for line in lines:
#poolapply_async(parallel_extract_keyword,(line,out_put))
#保存处理的结果,可以方便输出到文件
res = poolmap(parallel_extract_keyword,lines)
#print("Print keywords:")
#for tag in res:
#print(" "join(tag))
poolclose()
pooljoin()
print("并行处理花费时间{t}s"format(t=timetime()-t1))
运行:
python data_process_by_multiprocesspy messagetxt
messagetxt是每行是一个文档,共581行,7M的数据
运行时间:
不使用sleep来挂起进程,也就是把timesleep(randomrandom())注释掉,运行可以大大节省时间。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)