2015-03-18 4 views
6

Ich mache langlaufende Experimente in einem IPython-Notebook auf einem Server, wo der typische Arbeitszyklus ist: Experiment starten, zum Mittagessen gehen, zurückkommen, überprüfen Sie den Fortschritt , check Facebook, check email, check Facebook wieder, schalte Computer aus, komm zurück, check Facebook, check Fortschritt, ...IPython Notebook - Drucken auf Notebook-Ausgabe nach dem Schließen des Browsers

Das Problem ist, dass, wenn ich das Browserfenster schließe, wo das Notebook läuft, der Druck/Logging-Ausgänge werden nicht mehr im Notebook gespeichert.

Zum Beispiel in meinem einfachen Experiment:

import time 
start_time = time.time() 
for i in xrange(5): 
    print '%s seconds have passed' % (time.time()-start_time) 
    time.sleep(2) 
print 'Done!' 

Wenn ich laufe, schließen Sie die Registerkarte und wieder 10 Sekunden später, ich sehe, was nur der Ausgang war, wenn das Notebook zuletzt gespeichert wurde. Was ich erwarte, um zu sehen ist:

0.000111818313599 seconds have passed 
2.00515794754 seconds have passed 
4.01105999947 seconds have passed 
6.0162498951 seconds have passed 
8.01735782623 seconds have passed 
Done! 

Vermutlich wird dies irgendwann in der Zukunft festgelegt werden, aber in der Zwischenzeit gibt es einige einfache Hack, um es den Druck Notebook Ausgabe machen auch nach dem Schließen des Browsers? Bonuspunkte, wenn es für Inline-Bilder funktioniert.

Antwort

2

Nun, eine gute Lösung gefunden. Die Lösung ist in dieser Datei: https://github.com/QUVA-Lab/artemis/blob/master/artemis/fileman/persistent_print.py

Mit Beispiel Verwendung: https://github.com/QUVA-Lab/artemis/blob/master/artemis/fileman/test_persistent_print.py

Die Demo sieht nun wie:

import time 
from general.persistent_print import capture_print, reprint 
capture_print() 
start_time = time.time() 
for i in xrange(5): 
    print '%s seconds have passed' % (time.time()-start_time) 
    time.sleep(2) 
print 'Done!' 

Und wenn ich laufe

reprint() 

In der nächsten Zelle Es wird alle gedruckten Anweisungen erneut anzeigen, die seit capture_print aufgerufen wurden. Offensichtlich wäre es besser, wenn das unnötig wäre, aber es funktioniert für jetzt.

+0

Code scheint nicht mehr zu existieren. – Poik

+0

Fixed defekten Link, danke. – Peter

Verwandte Themen