Ipython 创建一个单元格magics,在单元格执行之前和之后执行代码
我有一个特殊的类,用于捕获和处理给定算法的日志。这看起来像这样Ipython 创建一个单元格magics,在单元格执行之前和之后执行代码,ipython,jupyter-notebook,jupyter,ipython-magic,Ipython,Jupyter Notebook,Jupyter,Ipython Magic,我有一个特殊的类,用于捕获和处理给定算法的日志。这看起来像这样 report = Report2File(logger,"./path") report.start() solveProblem() report.stop() del report 我想变得更懒,只写东西 %%report "./path" solveProblem() 这种神奇细胞的创造一开始很容易 更新: @magics_class class MyMagics(Magics): @cell_magic
report = Report2File(logger,"./path")
report.start()
solveProblem()
report.stop()
del report
我想变得更懒,只写东西
%%report "./path"
solveProblem()
这种神奇细胞的创造一开始很容易
更新:
@magics_class
class MyMagics(Magics):
@cell_magic
def cmagic(self, line, cell):
"my cell magic"
self.before()
exec(cell)
self.after()
return line, cell
def before(self):
do stuff ...
def after(self):
do stuff ...
ip = get_ipython()
ip.register_magics(MyMagics)
但我有两个问题:
ip = get_ipython()
ip.register_magics(MyMagics)
注册魔法的正确方法如下
def load_ipython_extension(ip):
ip.register_magics(MyMagics)
def unload_ipython_extension(ip):
pass
您还需要使用
@magics\u class
(来自IPython.core.magic)装饰类。要传递参数,请查看
@magic_arguments
文档中的示例:这很容易理解。您还需要使用@magics_class
(来自IPython.core.magic)装饰类。要传递参数,请查看
@magic_arguments
文档中的示例:这很容易理解。@magics_class
是必需的,但不足以解决这两个问题。我只是忘了提一下@magics_class
是必需的,但不足以解决这两个问题。我只是忘了提一下。