python多进程提取处理大量文本的关键词方法


Posted in Python onJune 05, 2018

经常需要通过python代码来提取文本的关键词,用于文本分析。而实际应用中文本量又是大量的数据,如果使用单进程的话,效率会比较低,因此可以考虑使用多进程。

python的多进程只需要使用multiprocessing的模块就行,如果使用大量的进程就可以使用multiprocessing的进程池--Pool,然后不同进程处理时使用apply_async函数进行异步处理即可。

实验测试语料:message.txt中存放的581行文本,一共7M的数据,每行提取100个关键词。

代码如下:

#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from multiprocessing import Pool,Queue,Process
import multiprocessing as mp 
import time,random
import os
import codecs
import jieba.analyse
jieba.analyse.set_stop_words("yy_stop_words.txt")
def extract_keyword(input_string):
	#print("Do task by process {proc}".format(proc=os.getpid()))
	tags = jieba.analyse.extract_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=os.getpid()))
	tags = jieba.analyse.extract_tags(input_string, topK=100)
	#time.sleep(random.random())
	#print("key words:{kw}".format(kw=" ".join(tags)))
	#o_f = open(out_file,'w')
	#o_f.write(" ".join(tags)+"\n")
	return tags
if __name__ == "__main__":
	data_file = sys.argv[1]
	with codecs.open(data_file) as f:
		lines = f.readlines()
		f.close()
	
	out_put = data_file.split('.')[0] +"_tags.txt" 
	t0 = time.time()
	for line in lines:
		parallel_extract_keyword(line)
		#parallel_extract_keyword(line,out_put)
		#extract_keyword(line)
	print("串行处理花费时间{t}".format(t=time.time()-t0))
	
	pool = Pool(processes=int(mp.cpu_count()*0.7))
	t1 = time.time()
	#for line in lines:
		#pool.apply_async(parallel_extract_keyword,(line,out_put))
	#保存处理的结果,可以方便输出到文件
	res = pool.map(parallel_extract_keyword,lines)
	#print("Print keywords:")
	#for tag in res:
		#print(" ".join(tag))
	pool.close()
	pool.join()
	print("并行处理花费时间{t}s".format(t=time.time()-t1))

运行:

python data_process_by_multiprocess.py message.txt

message.txt是每行是一个文档,共581行,7M的数据

运行时间:

python多进程提取处理大量文本的关键词方法

不使用sleep来挂起进程,也就是把time.sleep(random.random())注释掉,运行可以大大节省时间。

python多进程提取处理大量文本的关键词方法

以上这篇python多进程提取处理大量文本的关键词方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python编写Linux系统守护进程实例
Feb 03 Python
Python中用memcached来减少数据库查询次数的教程
Apr 07 Python
python中reload(module)的用法示例详解
Sep 15 Python
Python学习小技巧总结
Jun 10 Python
python批量修改图片大小的方法
Jul 24 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
实例讲解python中的协程
Oct 08 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
django框架用户权限中的session缓存到redis中的方法
Aug 06 Python
详解Django配置优化方法
Nov 18 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
Python map及filter函数使用方法解析
Aug 06 Python
使用python进行文本预处理和提取特征的实例
Jun 05 #Python
python 用正则表达式筛选文本信息的实例
Jun 05 #Python
python和shell获取文本内容的方法
Jun 05 #Python
python 查找文件名包含指定字符串的方法
Jun 05 #Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 #Python
Python实现的读写json文件功能示例
Jun 05 #Python
python计算日期之间的放假日期
Jun 05 #Python
You might like
Protoss建筑一览
2020/03/14 星际争霸
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
详解jQuery事件
2017/01/13 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python+flask实现API的方法
2018/11/21 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
门诊挂号室室长岗位职责
2013/11/27 职场文书
奠基仪式主持词
2014/03/20 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
学校对教师的评语
2014/04/28 职场文书
班风口号
2014/06/18 职场文书
个人创业事迹材料
2014/12/30 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python