2013-10-11 12 views
20

Di solito devo rieseguire (la maggior parte delle parti) un notebook quando lo riapre, per poter accedere a variabili definite in precedenza e continuare a lavorare.Come saltare (in modo intermittente) determinate celle quando si esegue il blocco appunti IPython?

Tuttavia, a volte vorrei saltare alcune celle, che non hanno alcuna influenza sulle celle successive (ad esempio potrebbero comprendere un ramo di analisi terminato) e potrebbero impiegare molto tempo per l'esecuzione. Queste celle possono essere disperse in tutto il notebook, quindi qualcosa come "Esegui tutto sotto" non sarà di grande aiuto.

C'è un modo per raggiungere questo obiettivo?

Idealmente, quelle celle potrebbero essere contrassegnate con alcuni flag speciali, in modo che possano essere "Esegui" manualmente, ma sarebbero saltate quando "Esegui tutto".

EDIT

%%cache (ipycache estensione) come suggerito dal @Jakob risolve il problema in una certa misura.

In realtà, non ho nemmeno bisogno di caricare alcuna variabile (che può essere grande ma non necessaria per le celle successive) quando riesegui, solo l'output memorizzato conta come risultati di analisi.

Come soluzione, inserire %%cache folder/unique_identifier all'inizio della cella. Il codice verrà eseguito una volta sola e nessuna variabile verrà caricata durante la riesecuzione a meno che non venga eliminato il file unique_identifier.

Purtroppo, tutti i risultati di uscita sono persi quando ri-correre con %%cache ...

EDIT II (14 ott 2013)

La versione principale di ipython + ipycache ora mette sottaceti (e visualizza nuovamente) l'output del codecell.

Per le uscite di visualizzazione ricchi compreso il lattice, HTML (panda uscita dataframe), ricordarsi di utilizzare il metodo di visualizzazione() di IPython, per esempio, display(Latex(r'$\alpha_1$'))

+0

Se non è necessario visualizzare nuovamente l'uscita, è possibile defin e il tuo skip magico come ho fatto qui: http://stackoverflow.com/a/43584169/4098821 – Robbe

risposta

17

Attualmente, non esiste tale caratteristica inclusa nel notebook IPython. Tuttavia, ci sono alcune possibilità per rendere la vita più facile, come:

  • utilizzare il %store o forse meglio il %%cache magia (estensione) per memorizzare i risultati di questi intermittenza cellule, in modo da non dover essere ricalcolata (vedi https://github.com/rossant/ipycache)

  • aggiungere un if==0: prima che le cellule non si vuole eseguire

  • convertire queste cellule a cellule prime (ma si perderanno l'uscita già memorizzato!)

(vedi la discussione a https://github.com/ipython/ipython/issues/2125)

Jakob

+1

Ottimo per sapere sull'estensione di ipycache, che funziona in modo simile a quello che sto facendo (manualmente) ora, ma solo meglio! La magia '%% cache' funge efficacemente da flag speciale quando" Run All ", e la riesecuzione manuale richiede semplicemente la cancellazione dei file nella cache. Brillante! Grazie, Jakob ~ – herrlich10

5

Anche se questo non è esattamente quello che ti sembra di essere alla ricerca di, se si desidera omettere del tutto l'esecuzione di una cella (in cui i risultati non sono memorizzati nella cache caricati), è possibile aggiungere il seguente mod all'inizio di una cella (supponendo che si sta utilizzando un sistema operativo basato su Unix):

%%script false 
+1

Qualcuno sa come farlo su Windows? – royco

+0

@royco Funziona anche su Windows –

Problemi correlati