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实现通过shelve修改对象实例
Sep 26 Python
Python实现的桶排序算法示例
Nov 29 Python
Python数据处理篇之Sympy系列(五)---解方程
Oct 12 Python
python中文分词库jieba使用方法详解
Feb 11 Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 Python
pandas DataFrame运算的实现
Jun 14 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
详解python metaclass(元类)
Aug 13 Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 Python
python实现PolynomialFeatures多项式的方法
Jan 06 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 Python
在python中读取和写入CSV文件详情
Jun 28 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
php实现jQuery扩展函数
2009/10/30 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
javascript 数组操作详解
2015/01/29 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
vue实现购物车列表
2020/06/30 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
python实现贪吃蛇游戏
2020/03/21 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
python实现海螺图片的方法示例
2019/05/12 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
大学生就业自我鉴定
2013/10/26 职场文书
专科应届生求职信
2013/11/24 职场文书
外贸英语专业求职信范文
2013/12/25 职场文书
人力资源部培训专员岗位职责
2014/01/02 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
银行竞聘报告范文
2014/11/06 职场文书
统招统分证明
2015/06/23 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
python实现剪贴板的操作
2021/07/01 Python