IPython中的评测代码和脚本

IPython中的评测代码和脚本,python,profiling,ipython,Python,Profiling,Ipython,IPython为评测代码和脚本提供了哪些机制 我发现(2013年3月)有人建议定义自定义magics来包装对其他Python模块的调用:行分析器,psutil,内存分析器 然而,查看GitHub讨论,我还发现Fernando、tk和其他核心IPython开发人员讨论了默认情况下在IPython中包含magics以进行评测 所有这些都表明,我无法在中找到任何有关分析的信息 我目前正在使用IPython的主分支。我如何分析给定的脚本(例如,foo.py逐行或按函数调用?目标是什么?如果目标是“因为它

IPython为评测代码和脚本提供了哪些机制

我发现(2013年3月)有人建议定义自定义magics来包装对其他Python模块的调用:
行分析器
psutil
内存分析器

然而,查看GitHub讨论,我还发现Fernando、tk和其他核心IPython开发人员讨论了默认情况下在IPython中包含magics以进行评测

所有这些都表明,我无法在中找到任何有关分析的信息


我目前正在使用IPython的主分支。我如何分析给定的脚本(例如,
foo.py
逐行或按函数调用?

目标是什么?如果目标是“因为它在那里”进行分析,那么您将发现一些东西或其他东西。如果目标是加速一些代码,@MikeDunlavey-我不确定我是否理解你的问题。从分析代码中可以学到很多东西,例如,了解代码的大部分时间都花在哪里,是I/O吗?对我的大numpy数组进行数学处理?这些信息可以帮助我重新定义我希望我的程序实现的目标/范围、我应该针对的硬件体系结构等。但基本问题是一样的:通过逐行和函数调用分析我的代码,并尽可能深入了解,了解我的数据结构使用了多少内存。对于内存分析,我没有任何答案。对于性能评测,我看到的是它是一个最受欢迎的话题,但在加速代码方面几乎没有实际效果。人们的典型体验是:剖析器给了我很多数字,但我去看了“热门”代码,没有看到太多需要修复的地方,所以既然剖析器如此受人尊敬,那么肯定没有什么需要修复的(除了一些小东西)。问题不在于他们收集的数据。问题是演示文稿无法显示足够的上下文,因此您无法真正理解。有些探查器比其他探查器更好。我认为最好的方法是在墙上时钟上采集堆栈样本(以免对I/O视而不见),并按代码行(不仅仅是函数)报告百分比(而不是绝对)时间,并给出它们的蝴蝶视图。从旋转灯光进行缩放就是一个例子。但如果他们让你检查实际的堆栈样本,那就更好了,这样你就可以看到发生这种情况的全部原因。你只能检查一小部分,但奇怪的是,这在统计上是足够的。这是一个质量与样本数量的问题。如果你有一个无限循环,你需要多少样本才能找到它?答:程序状态的一个示例,经过仔细检查,因为您知道自己处于循环中。如果循环不是无限的,只是长时间运行,那么您需要多少个样本?如果活动(不管是什么)占用了部分时间,那么你需要看两次的样本数量平均为2/f,而你只需要看两次就可以知道它的重要性。