Как я могу получить возвращаемое значение из нескольких процессов в Python? - PullRequest
0 голосов
/ 22 мая 2019

Я хочу получить возвращаемые значения из нескольких процессов, инициализированных в одной функции и запущенных в другой функции.

 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 голосов
/ 24 мая 2019

Вы можете использовать Queue() для сбора элементов из нескольких процессов. [документы]

Вот очень простой пример того, как это может работать. См. эту часть документации для более глубокого примера того, как это работает.

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)
...