2009-07-10 19 views

Antwort

5

Am besten ist es, einen bestimmten Prozess als Eigentümer dieser Instanz zu bezeichnen und ihm zu widmen; Jeder andere Prozess, der Zugriff auf diese Instanz benötigt, erhält ihn, indem er Nachrichten über eine Queue (wie vom Multiprocessing-Modul bereitgestellt) oder andere IPC-Mechanismen für die Nachrichtenweitergabe an den Eigentümerprozess sendet und die Antworten über ähnliche Mechanismen zurückerhält.

+0

Sollte ich stattdessen Threading bevorzugen? – DrFalk3n

5

Der ganze Sinn von Prozessen besteht darin, unterschiedliche Adressräume zu haben. Wenn Sie Informationen zwischen Prozessen austauschen möchten, müssen Sie einige Mittel von interprocess communication verwenden.

1

Ich glaube nicht, dass Sie die Instanz zwischen den Prozessen freigeben können, aber Sie können die Instanz auf gemeinsam genutzten Speicher zugreifen: http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes, um ihren Status zu steuern, wenn das wirklich das ist, was Sie tun möchten.

Wie jedoch in anderen Antworten erwähnt, könnte es einfacher sein, mit einer Warteschlange zu erreichen, was Sie wollen.

2

In Python 2.6 hat das Modul multiprocessing ein Objekt Value, das für sharing state between processes verwendet wird. Sie haben ein Codebeispiel, das Ihnen eine Vorstellung davon geben soll, wie Sie den Status auf diese Weise teilen können, und Sie können diese Methode beim Schreiben einer Singleton-Klasse verwenden.