为什么我的Python守护进程在休眠时占用所有CPU?

0 投票
2 回答
1231 浏览
提问于 2025-04-15 15:35

我在一个Ubuntu服务器上使用这个教程:http://code.activestate.com/recipes/278731/

我这样创建了一个守护进程:

class MyDaemon(Daemon):
    def run(self):
        while True:
            try:      
                do_my_data_processing()
            except MySQLdb.OperationalError:
                # Sleep an extra 30 seconds if database is away.
                time.sleep(30)
            time.sleep(30)

问题是,即使在休眠状态下,这个守护进程几乎占用了所有的CPU资源。

我哪里做错了呢?

2 个回答

0

原来这个后台程序并没有在休眠。它在不停地循环,每次循环之间没有休息,导致每30秒就重复一次。谢谢你,Aaron。

我通过把我的代码改成这样解决了这个问题:

class MyDaemon(Daemon):
    def run(self):
        while True:
            try:      
                do_my_data_processing()
                time.sleep(30)
            except MySQLdb.OperationalError:
                # Sleep an extra 30 seconds if database is away.
                time.sleep(30)
3

你发的代码看起来没问题。你的错误可能出现在别的地方。在循环里加一个print语句,看看它是不是在休眠。

撰写回答