【问题标题】:Profiling of Python threads [duplicate]Python线程的分析[重复]
【发布时间】:2011-01-14 04:04:51
【问题描述】:

我试图弄清楚如何在我的应用程序中测量几个 python 线程的性能。我目前有几个根据用户输入在不同线程上执行的任务,我想测量执行时间,甚至可能是每个线程的内存消耗。我曾尝试使用 cProfile(在线程的每个实例化上,然后我会将数据写入文件,然后汇总所有结果)但成功有限。此外,我还有一个额外的问题,即有一些阻塞 IO,这会扭曲我的结果。无论如何可以有效地分析我的应用程序?

【问题讨论】:

  • 通过使用 cProfile,您已经有了一个很好的开始!如果您能详细解释一下您使用 cProfile 获得的“有限成功”,我们可能会帮助解决这个问题并从那里继续。
  • 作为不相关的说明,您可能需要考虑多个进程而不是多个线程:en.wikipedia.org/wiki/Global_Interpreter_Lock

标签: python multithreading


【解决方案1】:

有几种不同的方法可以解决这个问题。 cProfile 很棒,并且附带 Python,但是很多人认为多线程分析是一个问题。解决此问题的一种方法是为每个线程运行单独的 cProfile 实例,然后使用 Stats.add 组合结果。

如果它不像您希望的那样有用,另一种选择是使用Yappi,我已经成功地将其用于一些特殊的多线程案例。它有很好的文档,所以设置它应该不会有太多麻烦。

有关内存特定分析,请查看Heapy。但请注意,如果您的代码不好,它可能会创建一些您见过的最大的日志文件!

【讨论】:

  • 我的系统是一个网络服务器,如果我在不同的请求中使用pr = cProfile.Profile(),是不是所谓的cProfile的单独实例
猜你喜欢
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 2016-07-09
  • 2010-10-13
  • 2016-12-04
相关资源
最近更新 更多