使用行分析由另一个函数调用的函数时出错
我正在使用 lprun 在 Jupyterlab 中对我的代码进行行分析。我的代码结构和使用 lprun 的方式如下。
def fn1(a,b,c,d):
...
y=fn2(a,c) #is ok
# but %lprun -f fn2 y=fn2(a,c) gives error
def fn2(a,c):
.....
.....
my_main_code lines
....
%lprun -f fn1 x=fn1(a,b,c,d)
.....
如您所见,我的主代码调用 fn1
并调用 fn2
。当我仅对 fn1
使用 lprun
时,效果很好,而且我发现 fn2
需要很多时间。因此,我决定将 lprun 命令放在 fn2
调用上,如上所示作为注释。 但随后它会抛出一个错误,指出名称 c
未定义。 那么,如何在 fn2
上进行线路分析?
I am using lprun
to do line profiling for my code in Jupyterlab. The structure of my code and the way I use lprun is as below.
def fn1(a,b,c,d):
...
y=fn2(a,c) #is ok
# but %lprun -f fn2 y=fn2(a,c) gives error
def fn2(a,c):
.....
.....
my_main_code lines
....
%lprun -f fn1 x=fn1(a,b,c,d)
.....
As you see, my main code calls fn1
and it calls fn2
. When I use lprun
just for fn1
it works well and I saw that fn2
takes a lot of time. So, I decided to put lprun command on the fn2
call as shown above as a comment. But it then throws an error that name c
is not defined. So, how can I do line profiling on fn2
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我自己找到了解决方案!还要使Profiler显示
fn2
的时间统计信息,而不是原始%lprun -f fn1 x = fn1(a,b,b,c,d)
替换使用%lprun -f fn2 -f fn1 x = fn1(a,b,c,d)
。如果将
lprun
在fn1
中放置在调用fn2
时,则将错误作为所讨论。I found a solution to this on my own! To make the profiler display the time statistics for
fn2
also, instead of original%lprun -f fn1 x=fn1(a,b,c,d)
replace with%lprun -f fn2 -f fn1 x=fn1(a,b,c,d)
.If you put
lprun
insidefn1
while callingfn2
, it throws the error as in question.