上一篇博客python多进程逐对比较文档相似度+均分比较次数里面开始用multiprocess,用得很原始,比较笨。把100次比较切成等分的4份,每份25次,因为每次比较的计算量是不同的,虽然切成均分的份数了,但是实际上往往3个进程跑完了,还有一个计算量大的要单独跑半天。然后研究了一下pool,于是池子来了。
少啰嗦,先看代码:
result = Manager().list()
p1 = Pool()
for i in range(len(files) - 1):
for j in range(i + 1, len(files)):
p1.apply_async(compare, args=(files[i], files[j], result))
p1.close()
p1.join()
for line in result:
print(line)
创建进程池,循环每一次比较的两个文件,丢进进程池,处理完了自动再将下一次需要比较的两个文件丢进池子里,显然聪明和快多了。进程数作为Pool()的参数,不设定就是逻辑cpu数。