Python 如何为Jupyter笔记本中的每个单元启用计时魔法?
Python 如何为Jupyter笔记本中的每个单元启用计时魔法?,python,ipython-notebook,jupyter-notebook,Python,Ipython Notebook,Jupyter Notebook,%%time和%%timeit魔术可以对Jupyter或iPython笔记本中的单个单元格进行计时 Jupyter笔记本中的每个单元格是否有类似的定时功能 与之相关,但没有回答在每个单元格中自动启用给定魔法这一更一般的问题。实现这一点的黑客方法是通过custom.js文件(通常放在~/.jupyter/custom/custom.js) 如何为工具栏创建按钮的示例就在这里,我就是根据这个示例来回答这个问题的。按下“启用”按钮时,它只是将您想要的魔法字符串形式添加到所有单元格中,而“禁用”按钮使用
%%time
和%%timeit
魔术可以对Jupyter或iPython笔记本中的单个单元格进行计时
Jupyter笔记本中的每个单元格是否有类似的定时功能
与之相关,但没有回答在每个单元格中自动启用给定魔法这一更一般的问题。实现这一点的黑客方法是通过custom.js文件(通常放在
~/.jupyter/custom/custom.js
)
如何为工具栏创建按钮的示例就在这里,我就是根据这个示例来回答这个问题的。按下“启用”按钮时,它只是将您想要的魔法字符串形式添加到所有单元格中,而“禁用”按钮使用str.replace
将其“关闭”
回答很好,但是我没有提到我正在一个公司的Jupyter服务器上运行,我不确定我是否有权访问
custom.js
来测试它。最后我有机会在另一个系统上测试它。如前所述,答案没有多大意义——在每个单元格中同时包含%%time
和%%timeit
是没有用的。所以无论你的答案是%%time\n%%timeit\n
,我都用%%time\n
替换了它。但一般的方法效果很好。谢谢顺便说一下,fa-clock-o
的图标可以工作,但不能fa-stop-circle-o
。Jupyter核心版本4.2.0。可能是相关的
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.
]);
});
});