/ Erstellen eines Queue.Queue-Objekts im Konstruktor eines Prozesses - Python, Multiprocessing

Erstellen eines Queue.Queue-Objekts im Konstruktor eines Prozesses - Python, Multiprocessing

Habe ich Recht damit, dass folgendes falsch ist:

import Queue
import multiprocessing

class P(multiprocessing.Process):
def __init__(self, spy):
super(P, self).__init__()
self.queue = Queue.Queue()

def run(self):
self.queue.put(1)

seit ich die Warteschlange in einem der wichtigsten erstellenProzess statt im Prozess von Typ P. Was kann schief gehen, wenn ich die Warteschlange in einem Prozess erstellen und in einem anderen Prozess verwenden, wie ich oben tue? Beachten Sie, dass ich nicht self.queue zwischen Prozessen verwenden möchte, ich habe gerade den Fehler gemacht, es im Konstruktor zu erstellen.

Mein Verständnis ist, dass, wenn ich eine Warteschlange zwischen Prozessen verwenden wollte, Multiprocessing.Queue stattdessen verwendet werden sollte.

Antworten:

1 für die Antwort № 1

Solange Sie nicht versuchen, die Warteschlange von beiden Prozessen zu verwenden, sollte die übliche Warteschlange funktionieren. Die Warteschlange könnte in einigen Fällen bei jedem Prozess eine Kopie hinterlassen, aber sie sind nicht identisch.

Und ja, Sie sollten Multiprocessing.Queue verwenden, wenn die Warteschlange von beiden Threads verwendet werden soll.

Python-Warteschlange und Multiprocessing-Warteschlange: Wie verhalten sie sich?