2015-03-18 20 views
6

Sto eseguendo esperimenti di lunga durata su un notebook IPython in esecuzione su un server, in cui il ciclo di lavoro tipico è: avvio dell'esperimento, pranzo, ritorno, controllo dell'avanzamento , controlla Facebook, controlla la posta elettronica, controlla di nuovo Facebook, spegni il computer, torna indietro, controlla Facebook, verifica progresso, ...Notebook IPython - Continua a stampare sull'output del notebook dopo la chiusura del browser

Il problema è che quando chiudo la finestra del browser in cui è in esecuzione il notebook, la stampa/le uscite di registrazione non vengono più salvate nel notebook.

Per esempio, nel mio semplice esperimento:

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!' 

Se corro, chiudere la scheda, e tornare dopo 10 secondi, ho solo vedere ciò che l'uscita è stato quando il notebook è stato salvato l'ultima volta. Quello che mi aspetto di vedere è:

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! 

Presumibilmente questo sarà fissato ad un certo punto nel futuro, ma nel frattempo c'è qualche semplice trucco per farlo continuare la stampa per l'uscita del notebook dopo la chiusura del browser? Punti bonus se funziona per immagini in linea.

risposta

2

Bene, ho trovato una soluzione ok. La soluzione è in questo file: https://github.com/QUVA-Lab/artemis/blob/master/artemis/fileman/persistent_print.py

Con esempio l'uso: https://github.com/QUVA-Lab/artemis/blob/master/artemis/fileman/test_persistent_print.py

La demo si presenta ormai come:

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!' 

E se corro

reprint() 

Nella cella successiva , visualizzerà di nuovo tutte le dichiarazioni di stampa effettuate dal momento in cui è stato chiamato il numero capture_print. Ovviamente sarebbe meglio se questo non fosse necessario, ma funziona per ora.

+0

Il codice non sembra più esistere. – Poik

+0

Corretto collegamento interrotto, grazie. – Peter

Problemi correlati