【发布时间】:2014-12-23 04:07:29
【问题描述】:
我有数十万个文本文件,我想以各种方式对其进行解析。我想将输出保存到单个文件而不会出现同步问题。我一直在使用多处理池来执行此操作以节省时间,但我不知道如何组合池和队列。
以下代码将保存文件名以及文件中连续“x”的最大数量。但是,我希望所有进程都将结果保存到同一个文件中,而不是像我的示例中那样保存到不同的文件中。对此的任何帮助将不胜感激。
import multiprocessing
with open('infilenamess.txt') as f:
filenames = f.read().splitlines()
def mp_worker(filename):
with open(filename, 'r') as f:
text=f.read()
m=re.findall("x+", text)
count=len(max(m, key=len))
outfile=open(filename+'_results.txt', 'a')
outfile.write(str(filename)+'|'+str(count)+'\n')
outfile.close()
def mp_handler():
p = multiprocessing.Pool(32)
p.map(mp_worker, filenames)
if __name__ == '__main__':
mp_handler()
【问题讨论】:
标签: python queue multiprocessing pool