Ich schreibe ein Skript, um eine Kopie einiger Daten zwischen zwei Rechnern im selben Netzwerk mit psycopg2 zu erstellen. Ich ersetze eine alte, hässliche Bash, die die Kopie mit
macht %Vor%Dies scheint sowohl die einfachste als auch effizienteste Möglichkeit, die Kopie zu erstellen. Es ist einfach in Python mit einem stringIO oder einer temporären Datei zu replizieren, so:
%Vor%... aber das beinhaltet das Speichern aller Daten auf der Festplatte / im Speicher.
Hat jemand eine Möglichkeit gefunden, das Verhalten einer Unix-Pipe in einer solchen Kopie nachzuahmen? Ich kann nicht scheinen, ein Unix-Rohr-Objekt zu finden, das POpen nicht einschließt - Vielleicht ist die beste Lösung, POpen und subprocess schließlich zu verwenden.
Sie müssen einen Ihrer Anrufe in einen separaten Thread setzen. Ich habe gerade gemerkt, dass du os.pipe () verwenden kannst, was den Rest macht ganz einfach:
%Vor%Sie könnten eine von Ihnen unterklassifizierte Deque verwenden, um Lesen und Schreiben zu unterstützen:
%Vor% Wenn der Leser viel schneller ist als der Schreiber, und die Tabelle groß ist, wird deque
immer noch groß, aber kleiner als das Ganze.
Ich weiß auch nicht sicher return ''
, wenn deque
leer ist, ist sicher, anstatt es erneut zu versuchen, bis es nicht leer ist, aber ich denke es ist. Lass es mich wissen, wenn es funktioniert.
Denken Sie an del buf
, wenn Sie sicher sind, dass die Kopie fertig ist, insbesondere, wenn das Skript nicht gerade an diesem Punkt beendet wird.