如何检索通过 multiprocessing.Process 调用的函数返回的多个值

2024-04-23

我有一个这样的场景:

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(使用前将#替换为@)

如何检索通过 multiprocessing.Process 调用的函数返回的多个值 的相关文章

随机推荐