2013-04-23 18 views
13

È possibile eseguire alcune attività lunghe in IPython Notebook, chiudere il browser e dopo un po 'di tempo aprirlo nuovamente e rivelare i risultati di queste attività?Esegui alcune attività in IPython Notebook in modalità distaccata

Say, compito in questo modo:

def f(): 
    import time 
    time.sleep(100) 
    with open("result.txt", "w") as fh: 
     fh.write("Done.") 

Se corro compito normalmente, e vicino il browser prima del completamento, come ho aperto di nuovo, non vedo 'result.txt'.

Se lo eseguo utilizzando %px esecuzione magica o parallela, di nuovo nessun risultato se chiudo il browser prima del completamento.

Eventuali estensioni o hack disponibili? O mi sta sfuggendo qualcosa?

UPDATE 1:

Sebbene non vi sia background jobs control support in IPython, processi in background diventare stantio dopo stacco browser. L'unica cosa che ho potuto venire in mente è l'emissione di %connect_info prima del browser di chiudere, e quindi collegare dal terminal schermo utilizzando

ipython console --existing <ID>.json 

e gestito i miei lavori da lì.

UPDATE 2:

Ancora più utile hack è combinazione di ipython console e controllo del lavoro. Cioè Apro la console e mi collego alla stessa sessione mentre avvio il lavoro in background nel browser e quindi sono libero di chiuderlo fino al completamento del lavoro.

UPDATE 3:

sembra funzionare a partire dalla versione ipython 1.0dev senza hack. basta eseguire ciò che vuoi, chiudere il browser e funziona ancora.

risposta

2

Normalmente utilizzo la schermata di comando linux, che apre una shell diversa che può essere eseguita in background.

Ad esempio, quando si inserisce la shell per la prima volta si digita "schermo". Quindi ti dà un nuovo terminale. Avvia ipython lì con il comando precedente. Una volta eseguito, sulla tastiera premi CTRL + A CTRL + D. Il programma inizia quindi a funzionare in background e puoi chiudere il terminale. Se vuoi tornare ad esso, digita 'screen -r' nella riga di comando.

+0

Stephan, forse non ero chiaro, ma sto chiedendo di notebook iPython - che è una console basata su browser. E non ho trovato alcun modo di utilizzare i browser basati su console per accedere a iPython da sotto lo schermo. – Anaderi

+0

Il mio male. Non è un indizio allora. – Stephan

1

Non so se questo è nuovo in IPython 1.0, ma nel mio notebook IPython, se chiamo la funzione f() e chiudo il browser, il kernel è in esecuzione in background e dopo un po '(ho cambiato time.sleep(10)) Vedo generato il file results.txt. Non penso che il kernel, che di solito si avvia in una console, si fermi quando si chiude la finestra del browser. Fammi sapere se mi sbaglio.

+0

in effetti sembra funzionare in IPython da 1.0dev – Anaderi