2012-12-10 5 views
6

Ich bin nur neugierig, ist es möglich, alle Variablen und den aktuellen Zustand des Programms in eine Datei zu dumpen, und dann auf einem anderen Computer wiederherstellen ?!
Nehmen wir an, ich habe ein kleines Programm in Python oder Ruby, unter einer bestimmten Bedingung würde es alle aktuellen Variablen und den aktuellen Zustand in eine Datei ablegen.
Später könnte ich es wieder in einer anderen Maschine laden und zu ihm zurückkehren.
Etwas wie VM Snapshot-Funktion.
Ich habe hier eine Frage wie diese, aber Java bezogen gesehen, die aktuelle JVM speichern und wieder in einer anderen JVM ausführen. Die meisten Leute erzählten, dass es so etwas nicht gab, nur Terrakotta hatte etwas, immer noch nicht perfekt. Danke.Speichern des Stapels?

Um zu klären, was ich zu erreichen versuchen:
Bei 2 oder mehr Raspberry Pi, ich versuche, meine Software auf Pi nº1 zu laufen, aber dann, wenn ich etwas anderes damit zu tun brauche, muß ich verschiebe die Software ohne Datenverlust auf Pi Nr. 2, nur eine geringe Pausenzeit.
Und so weiter, zu einer unbegrenzten Anzahl von Maschinen.

+3

stelle ich mir jemanden mit 'pickle' verrückt gehen könnte und so etwas vage, aber es wäre schrecklich zerbrechlich sein und wahrscheinlich nicht alles. Es ist eine schlechte Idee, so oder so. –

+2

Das Beizen der gesamten Umgebung wird hier angesprochen: http: // stackoverflow.com/questions/8232798/python-script-to-pickle-gesamte-umgebung – 101100

+1

Es ist möglich mit einem Core-Dump und ist wie Perl macht es mit ['dump'] (http://perldoc.perl.org/functions/ dump.html). Sie sollten jedoch auf superuser.com fragen, wie Sie es tun, wie die Perl 'dump'-Dokumentation sagt:" ... Diese Funktion ist jetzt weitgehend veraltet, vor allem weil es sehr schwer ist, eine Kerndatei in eine ausführbare Datei zu konvertieren . " –

Antwort

1

Gute Frage.

In Smalltalk, ja.

Eigentlich in Smalltalk, Dumping das gesamte Programm und Neustart ist die nur Weg, um Programme zu speichern und zu teilen. Es gibt keine Quelldateien und es gibt keine Möglichkeit, ein Programm von Null zu starten. In Smalltalk erhalten Sie Ihr Feature also kostenlos.

Die Smalltalk-VM bietet einen Hook, über den sich jedes Objekt registrieren kann, um nach einem Neustart seine externen Ressourcen wiederherzustellen, wie das erneute Öffnen von Dateien und Internetverbindungen. Aber auch ganzzahlige Arrays werden für diesen Hook registriert, um die Endianität ihrer Werte zu ändern, falls der Dump auf eine Maschine mit anderer Endianz verschoben wurde.

Dies könnte eine Ahnung davon geben, wie schwierig (oder nicht) es dazu führen könnte, dies in einer Sprache zu erreichen, die keine wiederaufsetzbaren Dumps unterstützt.

Alle anderen Sprachen sind leider viel weniger live. Mit Ausnahme einiger Lisp-Implementierungen würde ich keine Sprache kennen, die das Fortsetzen von einem Speicherabbild unterstützt.

Was ist eine verpasste Gelegenheit.

+0

Hallo Akuhn, ich habe Smalltalk von Beispiel gelesen, danke für den Tipp, aber ich glaube nicht, dass Smalltalk für mich ist :) Ich werde trotzdem einen Schuss geben. Danke –

+0

+1 für die Erwähnung von Smalltalk. Es ist so schade, dass sein Erbe in dieser Angelegenheit von seinen sogenannten Nachkommen, die in der zeitgenössischen Industrie verwendet werden, nicht angenommen wurde. So viele Möglichkeiten, so viel verschwendete Potenziale. – Jan

0

Ich habe gesehen Mariano demonstrieren, dass mit Fuel (Objekt Serialisierung) in Pharo Smalltalk auf einer kürzlichen Esug Konferenz. Sie können das Debuggen fortsetzen und so lange ausführen, wie Sie nicht serialisierte Objekte nicht treffen. Squeak smalltalk läuft auf dem Pi, und wenn das Speichern eines Bildes gut genug für Sie ist, ist das trivial. Wir warten immer noch auf die schnellere JITting VM für ARM (Teil des Google Summer of Code-Programms)

Verwandte Themen