我重新打开笔记本时通常必须重新运行(大多数部分)笔记本,以便访问以前定义的变量并继续工作.
但是,有时我想跳过一些对后续细胞没有影响的细胞(例如,它们可能包含完成的分析分支)并且可能需要很长时间才能运行.这些细胞可以分散在整个笔记本中,因此像"Run All Below"这样的东西也无济于事.
有没有办法实现这个目标?
理想情况下,这些单元格可以使用一些特殊标记进行标记,以便它们可以手动"运行",但在"全部运行"时将被跳过.
编辑
%%cache
(@ ipak扩展)@Jakob建议在某种程度上解决了这个问题.
实际上,我甚至不需要在重新运行时加载任何变量(对于后续单元格而言可能很大但不必要),只有存储的输出才能作为分析结果.
作为一种解决方案,放在%%cache folder/unique_identifier
细胞的开头.代码将只执行一次,重新运行时不会加载任何变量,除非您删除unique_identifier文件.
不幸的是,当重新运行时,所有输出结果都会丢失%%cache
.
编辑II(2013年10月14日)
ipython + ipycache的主版本现在也会修改(并重新显示)codecell输出.
对于丰富的显示输出,包括Latex,HTML(pandas DataFrame输出),请记住使用IPython的display()方法,例如, display(Latex(r'$\alpha_1$'))
我有一个ipython笔记本,它在数据处理程序中运行几个步骤,并在整个过程中将信息保存在文件中.这样,在开发我的代码时(主要是在一个单独的.py模块中),我可以跳过并运行各种步骤.我想设置它以便我可以Cell
- > run all
但只让它执行某些易于选择的选定步骤.例如,我想要定义我想在dict中运行的步骤,如下所示:
process = {
'load files':False,
'generate interactions list':False,
'random walk':True,
'dereference walk':True,
'reduce walk':True,
'generate output':True
}
Run Code Online (Sandbox Code Playgroud)
然后步骤将基于此dict运行.顺便说一下,每个步骤包括多个细胞.
我认为%macro
不是我想要的,因为任何时候我改变任何东西或重新启动内核我都必须重新定义宏,改变单元格数.
那些线上是否有像魔术%skip
或%skipto
魔法一样的东西?或者也许是一种干净的方式放在细胞的开头,if process[<current step>]: %dont_run_rest_of_cell
?
我使用 IPython 2.0 Notebook 进行教学。
笔记本是在教学课程之前创建的,并在课程期间按原样使用。
当然,当我准备笔记本时,我按顺序访问所有单元格是有意义的(实际上,我没有)。
回到课堂,当我向学生展示概念和代码时,我不需要将焦点放在下一个单元格上,我只需要光标在下一个代码单元格中等待......
我最希望的是有人能够更改 Shift-Enter 的默认行为,以便它执行当前单元格,并跳转到下一个可执行单元格。
已经完成了吗?