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参数和作用域的使用
Nov 01 Python
python爬虫常用的模块分析
Aug 29 Python
wxPython中listbox用法实例详解
Jun 01 Python
Windows下Anaconda的安装和简单使用方法
Jan 04 Python
pytorch + visdom 处理简单分类问题的示例
Jun 04 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Django学习之文件上传与下载
Oct 06 Python
python读取Kafka实例
Dec 23 Python
Python函数生成器原理及使用详解
Mar 12 Python
python dict如何定义
Sep 02 Python
Python机器学习工具scikit-learn的使用笔记
Jan 28 Python
Python数据分析入门之教你怎么搭建环境
May 13 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/02/24 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
python实现人脸识别代码
2017/11/08 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
详解python中递归函数
2019/04/16 Python
Pyqt5实现英文学习词典
2019/06/24 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
会计电算化专业应届大学生求职信
2013/10/22 职场文书
总经理办公室主任岗位职责
2013/11/12 职场文书
新学期开学演讲稿
2014/05/24 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
故宫的导游词
2015/01/31 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
老干部座谈会主持词
2015/07/03 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
Python中异常处理用法
2021/11/27 Python
win sever 2022如何占用操作主机角色
2022/06/25 Servers