我有一个这样的场景:
for each in content :
pdf_output,job_id=createpdf(each)
if pdf_output :
pdf_output = pdf_output + pdf_output
我正在尝试并行化整个过程。像这样
jobs=[]
for each in content :
jobs.append(multiprocessing.Process(target=self.createpdf, args=(content)))
for each in jobs :
jobs.start()
for each in jobs :
jobs.join()
我该如何明智地完成任务
if pdf_output :
pdf_output = pdf_output + pdf_output
对于每项工作?如何检索 create pdf 发送的 2 个返回值并对其进行处理?
我认为 multiprocessing.Queue 是一个线索,但我如何实现它?
对于如此简单的任务,您不需要队列。我建议使用游泳池。这Pool.map
方法可以并行地将函数应用于一系列值:
import multiprocessing
def createpdf(data):
return ("This is my pdf data: %s\n" % data, 0)
data = [ "My data", "includes", "strings and", "numbers like", 42, "and", 3.14]
number_of_processes = 5
results = multiprocessing.Pool(number_of_processes).map(createpdf, data)
outputs = [result[0] for result in results]
pdfoutput = "".join(outputs)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)