如何剖析多线程程序?
我有一个程序,运行得非常慢,我想对它进行性能分析。不过,这个程序是多线程的,所以我找不到一个好的方法来分析它。有没有什么建议?
我试过yappi这个工具,但在OS X上它崩溃了 :(
补充一下:这个程序是用Python写的,抱歉之前没说明。
2 个回答
2
根据你在排查问题时的进展,有一些工具可以帮助你找到问题的方向。
“top”是一个很有用的工具,可以让你知道你的问题是因为CPU使用过高,还是只是等待其他东西。
“dtruss -c”可以告诉你花了多少时间在什么地方,以及哪些系统调用占用了你大部分的时间。
这两个工具都能给你一些提示,即使你对python一无所知。
如果你只是想使用yappi,设置一个虚拟机并在你的电脑上安装某种Linux系统其实也不算太麻烦。我有时会这样做,尤其是当我想尝试一些新东西的时候。
当然,可能还有我不知道的事情会让这个过程变得不可能或者不值得去做。此外,在虚拟机上运行的其他操作系统进行性能分析,可能不会得到完全相同的结果,但仍然可能会有帮助。