2017-02-15 4 views
2

Die Symbole %%time und %%timeit ermöglichen das Timing einer einzelnen Zelle in einem Jupyter- oder iPython-Notebook.Wie aktiviert man Zeitzauber für jede Zelle im Jupyter Notebook?

Gibt es eine ähnliche Funktion, um das Timing für jede Zelle in einem Jupyter-Notebook ein- und auszuschalten?

This question ist verwandt, hat aber keine Antwort auf die allgemeinere Frage, ob eine bestimmte Magie automatisch in jeder Zelle aktiviert werden soll.

Antwort

2

A hacky Weg, dies zu tun, ist über eine custom.js Datei (in der Regel in ~/.jupyter/custom/custom.js platziert)

Das Beispiel dafür, wie Schaltflächen erstellen für die Symbolleiste here befindet und es ist das, was ich diese Antwort aus der Basis. Es fügt lediglich die String-Form der gewünschten Magie zu allen Zellen hinzu, wenn die Aktivierungstaste gedrückt wird, und die Deaktivierungstaste verwendet str.replace, um sie "abzuschalten".

define([ 
    'base/js/namespace', 
    'base/js/events' 
], function(Jupyter, events) { 
    events.on('app_initialized.NotebookApp', function(){ 
     Jupyter.toolbar.add_buttons_group([ 
      { 
       'label' : 'enable timing for all cells', 
       'icon' : 'fa-clock-o', // select your icon from http://fortawesome.github.io/Font-Awesome/icons 
       'callback': function() { 
        var cells = Jupyter.notebook.get_cells(); 
        cells.forEach(function(cell) { 
         var prev_text = cell.get_text(); 
         if(prev_text.indexOf('%%time\n%%timeit\n') === -1) { 
          var text = '%%time\n%%timeit\n' + prev_text; 
          cell.set_text(text); 
         } 
        }); 
       } 
      }, 
      { 
       'label' : 'disable timing for all cells', 
       'icon' : 'fa-stop-circle-o', // select your icon from http://fortawesome.github.io/Font-Awesome/icons 
       'callback': function() { 
        var cells = Jupyter.notebook.get_cells(); 
        cells.forEach(function(cell) { 
         var prev_text = cell.get_text(); 
         var text = prev_text.replace('%%time\n%%timeit\n',''); 
         cell.set_text(text); 
        }); 
       } 
      } 
      // add more button here if needed. 
     ]); 
    }); 
}); 
+0

Fantastische Antwort, aber ich versäumte es zu erwähnen, dass ich auf einem Corporate Jupyter Server laufen und ich bin mir nicht sicher, ob ich Zugang zu 'custom.js' habe, um es zu testen. – abeboparebop

+0

Endlich eine Chance, dies auf einem anderen System zu testen. Wie geschrieben, macht die Antwort nicht viel Sinn - es ist nicht sinnvoll, sowohl %% time als auch %% timeit in jeder Zelle zu haben. Also, überall wo deine Antwort '%% time \ n %% timeit \ n' sagt, habe ich es durch' %% time \ n' ersetzt. Aber der allgemeine Ansatz funktioniert gut. Vielen Dank! – abeboparebop

+0

Übrigens funktioniert das Symbol für "fa-clock-o", aber nicht für "fa-stop-circle-o". Jupyter Kern Version 4.2.0. – abeboparebop

Verwandte Themen