将变量传递到IPython Magic函数时出现问题

问题描述

在Jupyter Notebook中,我试图将IPython %%prun魔术函数的结果保存到特定文件中,该文件位于当前目录的子文件夹中,例如filename = r'subfoler\profile_result.txt'。我希望能够通过

链接文件
%%prun -T filename
...

但是,当我这样做时,它只是将探查器输出打印到当前目录中名为filename文件中。 This question一个类似的问题,解决方案是通过$filename传入变量。这不起作用,而是仅将输出保存到名为$filename文件中。这是一个错误吗?是否有可能做我想做的事情?还是我错误地传递了python变量?

解决方法

%prun文档具有此注释:

    .. versionchanged:: 7.3
       User variables are no longer expanded,the magic line is always left unmodified.

我不确定通常在哪里完成扩展,但是prun现在使用

opts,arg_str = self.parse_options(parameter_s,'D:l:rs:T:q',list_all=True,posix=False)

处理参数。

另一方面,

%history使用

@magic_arguments
@argument...
args = parse_argstring(self.history,parameter_s)

无需赘述,这是一条不同的解析路径。

我的版本为IPython 7.16.1

%debug%time%timeit具有相同的音符。

相关的请求请求:https://github.com/ipython/ipython/pull/11516/

推理:“对于在线使用Python代码的魔术最有用,例如%timeit等。”