我有一个程序正在低于标准执行waaaay,我想对其进行分析。但是,它是多线程的,所以我似乎无法找到一个好方法来描述这个东西。有什么建议?
我尝试了yappi,但它在OS X上出现了段错误:(
编辑:这是在python中,很抱歉将其置于分析中......
答案 0 :(得分:2)
根据您排除故障的程度,有些工具可能会指向您正确的方向。
“top”是一个有用的开始,可以向您展示您的问题是在耗费CPU时间还是只是等待内容。
“dtruss -c”可以显示您花费时间的地方以及系统调用占用您大部分时间的时间。
这些都可以在不知道任何关于python的情况下给你提示。
如果您只想使用yappi,那么设置虚拟机并在您的计算机上安装某种Linux并不是太多工作。当我想尝试一些事情的时候,我发现自己经常这样做。
当然可能有一些我不知道的事情使得它不可能或不值得付出努力。此外,对另一个运行虚拟化的操作系统进行概要分析可能不会给出完全相同的结果,但它可能仍然有用。
答案 1 :(得分:2)
您是多线程还是多处理?如果你只是多线程,那就是问题所在。由于Global Interpreter Lock(GIL),Python目前在多处理器系统上存在多线程问题。他们正在努力为Python 3.2修复它 - 至少使你的程序在单核上和在多核上运行一样快。
如果你不相信看一下线程程序的枪战结果。使用single core运行比使用quad cores运行更快。
现在,如果您使用多处理,那么分析也很困难,因为您必须从每个单独的进程运行CProfiler。 some questions point you {{3}}朝着正确的方向发展。