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 相关文章推荐
RC4文件加密的python实现方法
Jun 30 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
EM算法的python实现的方法步骤
Jan 02 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
详解python中*号的用法
Oct 21 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
webpack HappyPack实战详解
2019/10/08 Javascript
Python、Javascript中的闭包比较
2015/02/04 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
用python写爬虫简单吗
2020/07/28 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
大学生就业策划书范文
2014/04/04 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
施工安全标语
2014/06/07 职场文书
物理课外活动总结
2014/08/27 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
2015最新民情日记范文
2015/06/26 职场文书
导游词之太湖
2019/10/08 职场文书
Jsonp劫持学习
2021/04/01 PHP