You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CherryPy性能调优:如何降低初代单核树莓派空闲时的CPU占用率

解决初代单核树莓派上CherryPy空闲高CPU占用问题

我之前在初代单核树莓派上跑CherryPy也碰到过这个问题,空闲时CPU占比15-20%确实很头疼,折腾了好一阵才找到几个关键的优化点,你可以试试这些配置调整:

  • 关闭自动重载器:从你的启动日志能看到CherryPy默认开启了自动重载线程,它会持续监控文件变化,这是空闲时CPU占用的主要元凶之一。在配置里关掉它:

    cherrypy.config.update({'engine.autoreload.on': False})
    
  • 缩减线程池大小:初代单核树莓派根本不需要默认的多线程配置(默认线程池大小通常是10),多线程反而会增加上下文切换的开销。把线程数降到1或者2:

    cherrypy.config.update({'server.thread_pool': 1})
    
  • 禁用不必要的日志输出:屏幕日志的IO操作也会占用额外CPU,如果你不需要实时看日志,可以关掉屏幕输出,或者把日志写到文件:

    cherrypy.config.update({
        'log.screen': False,
        'log.error_file': '/var/log/cherrypy.log',
        'log.access_file': '/var/log/cherrypy_access.log'
    })
    
  • 切换到更高效的服务器适配器:CherryPy默认的服务器可以换成官方推荐的cheroot服务器,它的资源占用更低。先确保安装了cheroot(pip install cheroot),然后配置:

    cherrypy.config.update({
        'server.class': 'cheroot.server.Server',
        'server.socket_timeout': 60,  # 调整socket超时,减少频繁检查
        'server.accept_queue_size': 2  # 适配单核的小队列
    })
    

把这些配置整合起来,完整的启动代码大概是这样:

import cherrypy

class Root:
    pass

if __name__ == '__main__':
    cherrypy.config.update({
        'engine.autoreload.on': False,
        'server.thread_pool': 1,
        'log.screen': False,
        'server.class': 'cheroot.server.Server',
        'server.socket_timeout': 60,
        'server.accept_queue_size': 2
    })
    cherrypy.quickstart(Root())

调整完之后再用top命令查看,空闲时的CPU占用应该会降到1%左右,完全符合低功耗设备的需求。

内容的提问来源于stack exchange,提问作者Blindfreddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:27:40