python守护程序的CPU负载

时间:2012-07-30 08:28:56

标签: python daemon

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

我的守护程序已启动:

python file1:

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

python file2:

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 

**编辑

也许你可以再次帮助我,现在我跑了一个探查器但却无法确定谁是“坏人”。这是my profile results

1 个答案:

答案 0 :(得分:3)

您可以将Python探查器附加到您的软件:

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

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

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

当进程在atexit处理程序退出时,

...或替代写入分析日志。

然后,您可以阅读此文件,并查看哪个函数具有最多的累计CPU使用率。