为什么我的Python守护进程在休眠时占用所有CPU?
我在一个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
语句,看看它是不是在休眠。