当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中分析多线程程序?

如何解决《如何在Python中分析多线程程序?》经验,为你挑选了3个好方法。

我正在使用Python开发一个固有的多线程模块,我想知道它在哪里花费时间.cProfile似乎只是描述主线程.有没有办法分析计算中涉及的所有线程?



1> 小智..:

请参阅yappi(Yet Another Python Profiler).


有人记录吗?如何对结果进行排序以检索前10位总时间消费者?
您为什么不扩展答案并提供示例?

2> vartec..:

cProfile您可以cProfile在每个线程中运行单独的实例,然后组合统计信息,而不是运行一个.Stats.add()自动执行此操作.


实际上你只需要修改Thread.run()方法.
1)分析只是显示时间,未激活的CPU时间(尽量cProfile.run("time.sleep(3)"); 2)Stats.add()不是数以千计的电话很方便(容易跑出来的fd ,开始时打印的1000行)3)线程创建的开销是〜1000的因子

3> DNS..:

如果您可以做一些额外的工作,可以编写自己的实现类的概要分析类profile(self, frame, event, arg)。每当调用函数时都会调用该方法,您可以相当容易地设置一个结构以从中收集统计信息。

然后,您可以threading.setprofile用来在每个线程上注册该功能。调用该函数时,您可以threading.currentThread()用来查看它正在运行。更多信息(和现成的配方)在这里:

http://code.activestate.com/recipes/465831/

http://docs.python.org/library/threading.html#threading.setprofile

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有