1

我使用python-daemon库编写了一个守护进程。它一直使用大约 20% 的 CPU。我可以以某种方式检查程序的哪个部分使用了所有这些 CPU 时间,因为它实际上只是在等待用户输入?一如既往地感谢您的帮助!

我的守护进程已启动:

蟒蛇文件1:

context = daemon.DaemonContext()
context.pidfile = PidFile(pidfile)
with context:
    module.run()

蟒蛇文件2:

def run():
    end = threading.Event()
    # Do something here then:
    try:
        while not end.isSet():
        # Do some more stuff

    except KeyboardInterrupt, SystemExit:
        pass
    # Except some more stuff 

** 编辑

也许您可以再次帮助我,现在我运行了一个分析器,但无法真正分辨出“坏人”是谁。这是我的个人资料结果

4

1 回答 1

4

您可以将 Python 分析器附加到您的软件:

http://docs.python.org/library/profile.html

...并在守护程序启动时启动分析器。然后让探查器收集探查信息一段时间,并使用发送到进程的信号(例如 SIGUSR1)让您的守护程序将探查数据转储到文件中。

http://docs.python.org/library/signal.html

...或当进程在 atexit 处理程序退出时替代写入分析日志。

然后你可以阅读这个文件,看看哪个函数的累积 CPU 使用率最高。

于 2012-07-30T08:39:06.440 回答