Hacky способ сделать это через custom.js файл (обычно помещается в ~/.jupyter/custom/custom.js
)
Пример того, как создать кнопки для панели инструментов находится here и это то, что я на основе этого ответа прочь. Он просто добавляет строчную форму магии, которую вы хотите для всех ячеек, когда нажимаете кнопку включения, а кнопка отключения использует str.replace
, чтобы «выключить» ее.
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.
]);
});
});
Фантастический ответ, но я не упомянул, что я работаю на корпоративном сервере Jupyter, и я не уверен, что у меня есть доступ к 'custom.js' для его проверки. – abeboparebop
Наконец-то появилась возможность проверить это на другой системе. Как написано, ответ не имеет большого смысла - наличие как '%% time', так и' %% timeit' в каждой ячейке не является полезным. Поэтому везде ваш ответ говорит «%% time \ n %% timeit \ n', я заменил его на' %% time \ n'. Но общий подход работает очень хорошо. Благодаря! – abeboparebop
Кстати, значок 'fa-clock-o' работает, но не' fa-stop-circle-o'. Jupyter core version 4.2.0. – abeboparebop