问题
大多数 iPython “魔术函数”对我来说都很好: %hist
, %time
,%prun
等。但是,我注意到%lprun
iPython 无法找到它,因为我最初安装了它。
尝试解决
然后我发现我应该安装line_profiler
模块。我已经安装了这个模块,但似乎仍然无法让魔法功能正常工作。如果我尝试调用%lprun
,iPython 仍然找不到该函数。如果我用全名(line_profiler.magic_lprun
)调用它,可以找到该函数,但我根本无法让它工作。下面是我所做的一个例子(这是从“Python for Data Analysis”一书中逐步完成的):
成功使用%prun
[在:]
def add_and_sum(x, y):
added = x + y
summed = added.sum(axis=1)
return summed
x = randn(3000, 3000)
y = randn(3000, 3000)
add_and_sum(x, y)
正如预期的那样,我得到了一个很好的答案:
[出去:]
array([-23.6223074 , -10.08590736, -31.2957222 , ..., -14.17271747,
63.84057725, -50.28469621])
我可以做分析魔术功能%prun
:
[在:]
%prun add_and_sum(x, y)
[出去:]
6 function calls in 0.042 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.020 0.020 0.029 0.029 <ipython-input-27-19f64f63ba0a>:1(add_and_sum)
1 0.013 0.013 0.042 0.042 <string>:1(<module>)
1 0.009 0.009 0.009 0.009 {method 'reduce' of 'numpy.ufunc' objects}
1 0.000 0.000 0.009 0.009 _methods.py:16(_sum)
1 0.000 0.000 0.009 0.009 {method 'sum' of 'numpy.ndarray' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
使用失败%lprun
但是当我尝试时%lprun
,我什么也得不到:
[在:]
%lprun -f add_and_sum add_and_sum(x, y)
[出去:]
ERROR: Line magic function `%lprun` not found.
如果我尝试使用其标准名称调用该函数,它也不起作用:
[在:]
line_profiler.magic_lprun -f add_and_sum.test test.add_and_sum(x, y)
[出去:]
line_profiler.magic_lprun -f add_and_sum.test test.add_and_sum(x, y)
^
SyntaxError: invalid syntax
但是该库已正确导入,或者至少它是这样说的:
[在:]
line_profiler
[出去:]
<module 'line_profiler' from '/Users/<edit>/anaconda/lib/python2.7/site-packages/line_profiler-1.0b3-py2.7-macosx-10.5-x86_64.egg/line_profiler.pyc'>
[在:]
line_profiler.magic_lprun
[出去:]
<function line_profiler.magic_lprun>
似乎我应该配置一些额外的东西,以便可以识别我添加的这些新魔法功能。我无法通过网络搜索找到任何东西。
我将 Spyder 作为 IDE 运行(仍然使用 iPython 作为控制台),但我也直接使用 iPython 和 iPython notebook 进行了尝试。我没有任何形式的运气。