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采用raw_input读取输入值的方法
Aug 18 Python
Python os模块学习笔记
Jun 21 Python
Python自动发邮件脚本
Mar 31 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
Django中Model的使用方法教程
Mar 07 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python 模拟登陆github的示例
Dec 04 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 获取本地IP代码
2013/06/23 PHP
php构造函数的继承方法
2015/02/09 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
python 字符串格式化代码
2013/03/17 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
物业客服专员岗位职责
2013/11/30 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
大众服装店创业计划书范文
2014/01/01 职场文书
旷课检讨书1000字
2014/02/14 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
储备店长岗位职责
2015/04/14 职场文书
投标售后服务承诺书
2015/04/29 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL