Wie kann man Python-Skripte mit langer Laufzeit "anhalten" und "fortsetzen"?

8

Ich habe ein Python-Skript geschrieben, das eine große Anzahl von großen Textdateien verarbeitet und sehr viel ausführen kann. Manchmal muss das laufende Skript gestoppt und später fortgesetzt werden. Die möglichen Gründe, das Skript zu stoppen, sind Programmabstürze, Festplattenprobleme oder viele andere, wenn Sie es tun müssen. Ich möchte eine Art "stop / resume" -Mechanismus für das Skript implementieren.

  • Bei stop : Das Skript wird beendet & amp; speichert seinen aktuellen Status.
  • Bei Fortsetzen : Das Skript wird gestartet, wird jedoch vom zuletzt gespeicherten Status
  • fortgesetzt

Ich werde es implementieren mit den pickle und Signal -Modulen.

Ich werde froh sein zu hören, wie man es in pythonischer Weise macht.

Danke!

    
Valentine 09.06.2011, 21:12
quelle

3 Antworten

4

Hier ist etwas Einfaches, das Ihnen hoffentlich helfen kann:

%Vor%

Beispiel für die Ausführung:

%Vor%     
mouad 09.06.2011, 21:42
quelle
1

Wenn Sie große Dateien lesen möchten, verwenden Sie einfach ein Datei-Handle und lesen Sie die Zeilen einzeln nacheinander. Bearbeiten Sie dabei jede Zeile nach Bedarf. Wenn Sie die Python-Sitzung speichern möchten, verwenden Sie einfach dill.dump_session - und es werden alle vorhandenen Objekte gespeichert. Andere Antworten schlagen fehl, da pickle kein Datei-Handle picken kann. dill kann jedoch fast jedes Python-Objekt serialisieren - einschließlich eines Datei-Handles.

%Vor%

Beendet dann die Python-Sitzung und startet neu. Wenn Sie load_session haben, laden Sie alle Objekte, die zum Zeitpunkt des Aufrufs dump_session vorhanden waren.

%Vor%

Einfach so.

Holen Sie sich dill hier: Ссылка

    
Mike McKerns 13.03.2015 02:35
quelle
0

Die Ausführung könnte das Leben verschlafen oder (abgesehen von den Sicherheitsausnahmen) der Status des Skripts pickle d, gezippt und gespeichert werden.

Ссылка

Ссылка

Ссылка (5.9)

Ссылка

Ссылка

    
motoku 10.06.2011 08:14
quelle

Tags und Links