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

如何释放Jupyter Notebook中for loop的CPU资源 解决内核中断问题

解决方案

核心原因是Deepnote等云Jupyter平台有CPU持续高占用检测机制,当进程连续占用CPU超过阈值一定时间后,会主动中断内核释放资源,这就是你本地运行正常但平台上报错的核心原因,可按照以下方案优化:

  • 主动给CPU降载,避免持续高占用
    导入time模块,在每层循环末尾添加休眠逻辑:主页面循环每次结束加time.sleep(1.5),子页面循环每次结束加time.sleep(0.5);每轮while迭代完成后调用driver.quit()关闭Selenium浏览器进程,下一轮迭代重新初始化driver,避免浏览器后台进程累积占用CPU。
  • 修复代码里的隐性高消耗逻辑
    你崩溃位置的打印语句print(f'Página: {page} de {pages}')存在问题:pages是长度120+的numpy数组,每次打印都需要序列化整个数组,会大幅拉高CPU占用,改为print(f'Página: {page} de {final_page}')即可;同时减少不必要的高频打印,注释掉调试用的冗余打印语句,只保留关键进度输出,避免占用标准输出缓冲区的同时拉高CPU消耗。
  • 手动释放闲置资源
    导入gc模块,每轮主页面循环处理完成后,手动删除不再使用的df、df2等临时DataFrame变量,调用gc.collect()主动触发垃圾回收,避免闲置资源累积占用CPU和内存。
  • 优化超时和异常逻辑
    给driver添加页面加载超时限制driver.set_page_load_timeout(30),避免页面加载失败时进程卡壳持续占CPU;把现有宽泛的except改为捕获具体异常类型,比如except (NoSuchElementException, TimeoutException),避免未知异常导致进程挂起。
  • 拆分长时任务
    把单次循环的120页拆分为4组,每组30页,每组跑完就把结果写入持久化文件(如csv),避免单次任务长时间连续占用CPU触发平台的资源限制规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:24:05