如果书签名与当前工作目录中的某个目录名冲突,可以通过-b标记(其作用是覆写,使用书签目录)。shell脚本for循环%bookmark -l选项的作用是列出所有书签:
书签跟别名的区别是,书签会被自动持久化。
交互式调试器
调试代码的最佳时机之一就是错误刚刚发生那会儿。%debug命令将会调用那个事后调试器,并直接跳转到引发异常的那个栈帧。
在这个调试器中,你可以执行任意python代码并查看各个栈帧中的一切对象和数据。默认是从最低级开始的(即错误发生的地方)。输入u(或者up)和d(或者down)即可在栈跟踪的各级之间切换。
执行%pdb命令可以让Ipython在出现异常之后自动调用调试器。
此外,调试器还可以为代码开发工作提供帮助,尤其是当你想要设置断点或函数/脚本进行单步调试以查看各条语句的执行情况时。实现这个目的的方式有几个。第一,使用带-d选项的%run命令,这将会在执行脚本文件中的代码前先打开调试器。必须立即输入s才能进入脚本。
在此之后,改文件接下来的执行方式就全凭你一句话。c(continue)使脚本一直运行下去,直到断点时为止。输入n(或next)直接执行到下一行。
注意调试器命令的优先级高于变量名。这时在变量前面加上感叹号(!)即可查看其内容。

调试器的其他使用场景
1、set_trace(穷人断点)。
第一个函数(set_trace)非常简单,可以将它放在任何希望停下来查看的地方:按下C(continue)仍然会使代码恢复执行,不受影响。
2、debug函数
debug函数可以使你直接在任意函数上使用调试器。假设有这样一个函数:
现在对其进行单步调试。注意一下调试方法,我们将f当做第一个参数传给debug函数。后面再按顺序跟上各个需要传给f的关键字参数。
此外可以结合%run使用,通过%run -d执行脚本,你将会直接进入调试器,然后可以设置一些断点并启动脚本。如果再加上-b和一个行号,则调试器在启动时就会自动设置一个断点。(建议这一段最好百度一下这本书看一下)
测试代码的执行时间
用于Ipython的出发点是为了大数据分析,当然面对的是规模很大,数据量很多的数据,对于这种运行时间长的数据分析应用程序,可能我们需要测试一下各个部分的代码执行时间,来具体了解下,在整个过程中到底是哪些函数占用的时间最多。
使用内置的time模块以及time.clock和time.time 函数可以手动测试代码执行时间,但这是一件令人烦闷的时间,因为开发者或者测试者需要编写许多一模一样的了无生趣的公式化代码:
由于这是一个非常有用的需求功能,Ipython开发测试代码的过程中,提供了可以轻松测试得到信息的功能。魔术函数%time 和 %timeit。%time一次执行一条语句然后报告总体执行时间。
看上去它们的性能表现应该差不多,我们来用%time验证一下。


看上去第一种方法比第二种快了很多,但这并不是一个非常精确的结果,如果你对相同的语句执行多次%time的话,也会发现其结果会变得。为了得到更为精确的结果,需要使用魔术函数%timeit,对于任何语句,会执行多次产生一个非常精确的平均执行时间。



基本性能分析: %prun和%run -p
逐行分析函数性能
建议这两点看一下书,要写个py文件来测试,很烦0.0.总之用%prun(cProfile)做宏观性能分析,而用%lprun(line_profiler)做微观的性能分析。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-58904-3.html
骨子里透露着野蛮
服了你
美利坚万岁