2014-07-05 12 views
5

A volte i miei blocchi note Ipython si bloccano perché ho lasciato un'istruzione print in un loop grande o in una funzione ricorsiva. Il kernel mostra busy e il pulsante stop di solito non risponde. Alla fine Chrome mi chiede se voglio uccidere la pagina o aspettare.Come limitare il numero di righe di output in una data cella del notebook Ipython?

C'è un modo per limitare il numero di linee di uscita in una determinata cella? O in altro modo per evitare questo problema?

risposta

1

È possibile sopprimere output utilizzando this command:

‘;’ at the end of a line 

Forse creare una condizione in loop per sopprimere l'uscita oltre una certa soglia.

0

Questo mi causa alcuni problemi solo di recente. Ho scritto una classe per aggiungere un po 'di protezione alla funzione di stampa. L'ho appena gettato su github: staggerprint on github.

Inserirò la sezione Usage nella parte superiore dei miei notebook per proteggermi da questo tipo di arresti anomali. Se scoprirò come modificare questo comportamento dal livello del notebook, aggiungerò un'altra risposta, ma per ora dovrò farlo!

0

Per chiunque altro imbattersi in:

Se volete vedere un po 'della produzione, piuttosto che sopprimere l'uscita del tutto, c'è un extension chiamato limit-output.

Dovrai seguire le istruzioni di installazione per le estensioni al primo collegamento. Poi ho eseguito il seguente codice per aggiornare il numero massimo di caratteri in uscita da ciascuna cella:

from notebook.services.config import ConfigManager 
cm = ConfigManager().update('notebook', {'limit_output': 10}) 

Nota: è necessario eseguire il blocco di codice, quindi riavviare il server di notebook del tutto (non solo il kernel) affinché la modifica abbia effetto.

Risultati su v4.0.6 jupyter l'esecuzione di un Python 2.7.12 del kernel

for i in range(0,100): 
    print i 

0 
1 
2 
3 
4 

limit_output extension: Maximum message size exceeded 
+1

c'è un modo per fare questo solo per la cellula che sto per valutare? o questo tipo di cose richiede davvero di riavviare il notebook e non c'è modo di impostarlo su base "per cella"? –

+0

Dalla documentazione, 'il limite può anche essere impostato per una singola cella, utilizzando la cella cell.metadata.limit_output.» – user2699