2014-07-05 8 views
5

Manchmal stürzen meine Ipython-Notebooks ab, weil ich eine print-Anweisung in einer großen Schleife oder in einer rekursiven Funktion hinterlassen habe. Der Kernel zeigt busy und die stop Schaltfläche reagiert normalerweise nicht. Schließlich fragt mich Chrome, ob ich die Seite beenden oder warten möchte.Wie kann die Anzahl der Ausgabezeilen in einer bestimmten Zelle des Ipython-Notebooks begrenzt werden?

Gibt es eine Möglichkeit, die Anzahl der Ausgangsleitungen in einer bestimmten Zelle zu begrenzen? Oder eine andere Möglichkeit, dieses Problem zu vermeiden?

Antwort

1

Sie können die Ausgabe mit this command unterdrücken:

‘;’ at the end of a line 

Vielleicht eine Bedingung in der Schleife erstellen Ausgang über einen bestimmten Schwellenwert zu unterdrücken.

0

Das hat mich vor kurzem auch einige Probleme verursacht. Ich habe eine Klasse geschrieben, um die Druckfunktion etwas zu schützen. Ich habe es einfach auf github geworfen: staggerprint on github.

Ich werde den Abschnitt Verwendung an der Spitze meiner Notebooks zum Schutz gegen diese Art von Abstürzen setzen. Wenn ich herausfinde, wie ich dieses Verhalten von der Notebook-Ebene aus ändern kann, füge ich noch eine weitere Antwort hinzu, aber das muss erst einmal geschehen!

0

Für alle anderen über Stolper:

Wenn Sie einen Teil der Ausgabe sehen wollen, anstatt die Ausgabe vollständig unterdrücken, gibt es eine extensionlimit-output genannt.

Sie müssen die Installationsanweisungen für die Erweiterungen am ersten Link folgen. Dann lief ich den folgenden Code, um die maximale Anzahl der ausgegebenen Zeichen von jeder Zelle zu aktualisieren:

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

Hinweis: Sie werden den Codeblock ausführen müssen, dann Notebook-Server neu starten vollständig (nicht nur der Kernel), damit die Änderung wirksam wird.

Ergebnisse auf jupyter v4.0.6 einen Python-2.7.12-Kernel läuft zu bewerten

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

0 
1 
2 
3 
4 

limit_output extension: Maximum message size exceeded 
+1

ist es eine Möglichkeit, dies zu tun, nur für die Zelle Ich bin zu? oder diese Art von Dingen wirklich erfordern, um das Notebook neu zu starten, und es gibt keine Möglichkeit, es auf "pro Zelle" zu setzen? –

+0

Aus den Dokumenten heraus kann das Limit für eine einzelne Zelle unter Verwendung der Zelle cell.metadata.limit_output gesetzt werden – user2699

Verwandte Themen