如何从python中的多个进程获取返回值?

时间:2019-05-22 13:07:06

标签: python multiprocessing return-value

我想从一个函数中初始化并在另一个函数中启动的多个进程中获取返回值。

 import multiprocessing
 import time

 class Auto:

    def __init__(self):
        self.msf = 0

    def auto(self, return_dict, i):
        # print "hello"
        return_dict["hello"] = "hello{}".format(i)

    def msf1(self):
        man = multiprocessing.Manager()
        self.return_dict = man.dict()
        self.a= multiprocessing.Process(target=self.auto, args=(self.return_dict, 1, ))
        self.b= multiprocessing.Process(target=self.auto, args=(self.return_dict, 1, ))
        self.c= multiprocessing.Process(target=self.auto, args=(self.return_dict, 1, ))

    def msf2(self):
        self.a.start()
        self.b.start()
        self.c.start()

        return self.return_dict.values()

1 个答案:

答案 0 :(得分:0)

您可以使用Queue()从多个流程中收集项目。 [docs]

这是一个如何工作的非常简单的例子。有关其工作原理的更多示例,请参见文档中的this part

def number(done_queue):
    done_queue.put(5)

done_queue = multiprocessing.Queue()
x = Process(target=number, args=(done_queue))
x.start()
x.join()
y = [i for i in done_queue]
print(y)