python多进程提取处理大量文本的关键词方法
Python  /  管理员 发布于 7年前   291
经常需要通过python代码来提取文本的关键词,用于文本分析。而实际应用中文本量又是大量的数据,如果使用单进程的话,效率会比较低,因此可以考虑使用多进程。
python的多进程只需要使用multiprocessing的模块就行,如果使用大量的进程就可以使用multiprocessing的进程池--Pool,然后不同进程处理时使用apply_async函数进行异步处理即可。
实验测试语料:message.txt中存放的581行文本,一共7M的数据,每行提取100个关键词。
代码如下:
#coding:utf-8import sysreload(sys)sys.setdefaultencoding("utf-8")from multiprocessing import Pool,Queue,Processimport multiprocessing as mp import time,randomimport osimport codecsimport jieba.analysejieba.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 tagsif __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的数据
运行时间:
不使用sleep来挂起进程,也就是把time.sleep(random.random())注释掉,运行可以大大节省时间。
以上这篇python多进程提取处理大量文本的关键词方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号