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库urllib与urllib2主要区别分析
Jul 13 Python
python实现猜数字小游戏
Mar 24 Python
python实现自动发送报警监控邮件
Jun 21 Python
简单了解python变量的作用域
Jul 30 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
python读取ini配置的类封装代码实例
Jan 08 Python
Python os模块常用方法和属性总结
Feb 20 Python
Python实现汇率转换操作
May 03 Python
python实现图片素描效果
Sep 26 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
python3爬虫中多线程的优势总结
Nov 24 Python
python 使用cycle构造无限循环迭代器
Dec 02 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的FTP学习(一)[转自奥索]
2006/10/09 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
jquery 选项卡效果 新手代码
2011/07/08 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
vue实现分页栏效果
2019/06/28 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
python字典操作实例详解
2017/11/16 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
django的csrf实现过程详解
2019/07/26 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
Python如何给你的程序做性能测试
2020/07/29 Python
python 实现批量图片识别并翻译
2020/11/02 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
what is the difference between ext2 and ext3
2013/11/03 面试题
交通安全演讲稿
2014/01/07 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
工作年限证明范本
2015/06/15 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
python数字图像处理:图像简单滤波
2022/06/28 Python