首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查应用程序的哪一部分正在消耗CPU?

如何检查应用程序的哪一部分正在消耗CPU?
EN

Stack Overflow用户
提问于 2009-09-24 08:45:56
回答 4查看 2.2K关注 0票数 0

我有一个wxPython应用程序,它有许多工作线程,空闲事件周期,以及许多其他这样的事件处理代码,这些代码可以消耗CPU,而现在,当应用程序不与CPU交互时,消耗的CPU大约为8-10%。

问题:

是否有一个工具可以判断我的应用程序的哪个部分/线程消耗了最多的CPU?如果没有这样的通用工具,我愿意知道您通常会采取什么方法来解决这种情况?例如禁用部分应用程序、跟踪等

编辑:可能是我的问题的语言是模棱两可的,我不想知道我的代码中哪个函数或代码块占用了大部分资源,因为我可以使用分析器。我想知道的是,当我运行我的应用程序时,我看到cpu的使用率是8-10%,现在有方法知道我的应用程序的不同部分,线程消耗了10%的cpu吗?基本上,在那一刻,我想知道代码的哪一部分正在运行?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-24 10:38:28

我可以通过编写修改版本的python 跟踪模块来解决我的问题,它可以被禁用,基本上可以修改Trace类,如下所示

代码语言:javascript
运行
复制
import sys
import trace

class MyTrace(trace.Trace):
    def __init__(self, *args, **kwargs):
        trace.Trace.__init__(self, *args, **kwargs)
        self.enabled = False

    def localtrace_trace_and_count(self, *args, **kwargs):
        if not self.enabled:
            return None 
        return trace.Trace.localtrace_trace_and_count(self, *args, **kwargs)

tracer = MyTrace(ignoredirs=[sys.prefix, sys.exec_prefix],)

def main():
    a = 1
    tracer.enabled = True
    a = 2
    tracer.enabled = False
    a = 3

# run the new command using the given tracer
tracer.run('main()')

输出:

代码语言:javascript
运行
复制
 --- modulename: untitled-2, funcname: main
untitled-2.py(19):     a = 2
untitled-2.py(20):     tracer.enabled = False

在临界点启用它可以帮助我逐行跟踪哪些代码语句执行得最多。

票数 0
EN

Stack Overflow用户

发布于 2009-09-24 09:00:50

如果所有线程都有唯一的启动方法,则可以使用Python附带的分析器

如果你在Mac电脑上,你应该看看仪器应用程序。您也可以在Linux中使用德特里斯

票数 1
EN

Stack Overflow用户

发布于 2009-09-24 09:51:32

在语言不可知论的层面上,这是不太实际的。去掉语言,剩下的就是大量的机器代码指令,到处都是系统调用。您可以使用Linux上的strace或Windows上的ProcessExplorer来尝试猜测这些系统调用发生了什么,但是只使用分析器就更有意义了。如果您确实可以访问该语言,那么您可以做各种各样的事情(额外的日志记录,调试器中的随机暂停),但是在这种情况下,分析器仍然是您最好的工具。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1470453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档