Я новичок в объектно-ориентированном python, и я переписываю свое существующее приложение в объектно-ориентированную версию, потому что сейчас разработчиков становится все больше, а мой код становится необслуживаемым.
Обычно я использую мультипроцессинговые очереди, но я нашел в этом примере http://www.doughellmann.com/PyMOTW/multiprocessing/basics.html, что я могу подкласс multiprocessing.Process
, так что я думаю, что это хорошая идея, и я написал класс для тестирования, как это:
code:
from multiprocessing import Process
class Processor(Process):
def return_name(self):
return "Process %s" % self.name
def run(self):
return self.return_name()
processes = []
if __name__ == "__main__":
for i in range(0,5):
p=Processor()
processes.append(p)
p.start()
for p in processes:
p.join()
Однако я не могу получить обратно значения, как я могу использовать очереди таким образом?
EDIT: Я хочу получить возвращаемое значение и думаю, куда поместить Queues()
.
Ответ Майка является лучшим, но просто для полноты хочу отметить, что я предпочитаю собирать очередь из join
контекстов , поэтому последний бит будет выглядеть так:
[proc.join() for proc in processes] # 1. join
while not q.empty(): # 2. get the results
print "RESULT: %s" % q.get()