2016-07-17 17 views
1

Ich habe zwei separate Python-Prozesse auf einem Linux-Server, p1 und p2, wie ein Diktat von p1 von p2 zu lesen?Wie teile ich ein Diktat unter verschiedenen Python-Prozessen?

Zwei Prozesse sind unabhängig, daher kann ich keinen Multiprocessing-basierten Ansatz verwenden, und wegen der langsamen Leistung möchte ich keine Socket-Kommunikation oder dateibasierten Ansatz verwenden. meine Python-Version ist 3.5.1

+0

http://stackoverflow.com/questions/1268252/python-possible-to-share-in-memory-data-between-2-separate-processes – Igor

+0

Durch zwei getrennte Prozesse, meinen Sie, dass verschiedene zwei Konsolen arbeiten oder zwei Python-Skripte in einer Konsole? Wenn es das erste ist, sehe ich keine andere Option als Socket-Datentransfer, wenn es das zweite ist, können Sie das Wörterbuch in dem Ordner speichern, in dem sich Skripte befinden (vielleicht als Textdatei), und es von einem anderen lesen Skript. – Rockybilly

+2

"So teilen Sie [...] zwischen einzelnen Python-Prozessen" - "Dies ist NICHT über Multiprozessing". Ich bin verwirrt. – spectras

Antwort

0

Ich denke, dass der einzige Weg, das zu tun ist mit IPC. Sie können das mit Sockets, PIPES tun. Und für all diese Methoden müssen Sie sie mit Pickle oder Json serialisieren. Wenn das Wörterbuch groß ist, kann es einige Sekunden dauern.

Wenn Sie das nicht möchten, sollten Sie eine Art gemeinsamen Speicher haben. Multiprocessing erlaubt das aber nur mit grundlegenden Datentypen.

+0

Ich habe gerade meine Frage aktualisiert, zwei Prozesse sind unabhängig, daher kann ich keinen Multiprocessing-basierten Ansatz verwenden, und wegen der langsamen Leistung möchte ich keine Socket-Kommunikation oder einen dateibasierten Ansatz verwenden. –

+0

Ich war vor ein paar Wochen mit diesem Problem konfrontiert. Der einzige Weg, dies zu tun, ist durch gemeinsame Speicher, aber ich habe nichts für Wörterbücher gefunden. – edgarstack

+0

Shared Memory kann nur zwischen gegabelten Prozessen verwendet werden, wie kann es zwischen unabhängigen Prozessen verwendet werden? –