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

如何在Jupyter Notebook运行结束后执行代码?

Notebook运行结束后执行代码的实现方案
  • 通过单元格级回调结合全局标记实现
    虽然IPython的post_run_cell是单元格级回调,但可以通过全局变量追踪是否执行到最后一个单元格:

    1. 在Notebook开头定义全局标记:
      is_last_cell = False
      
    2. 在你设定的最后一个单元格开头标记:
      is_last_cell = True
      
    3. 注册回调,判断标记后执行收尾代码:
      from IPython import get_ipython
      
      def run_after_final_cell():
          if is_last_cell:
              # 替换为你的收尾代码
              print("Notebook所有单元格执行完毕,运行收尾逻辑")
      
      ip = get_ipython()
      ip.events.register('post_run_cell', run_after_final_cell)
      
  • 解析Notebook元数据自动判断最后一个单元格
    无需手动标记,通过读取Notebook的.ipynb文件统计代码单元格总数,配合回调计数判断:

    from IPython import get_ipython
    import json
    
    # 替换为你的Notebook文件名
    with open('your_notebook.ipynb', 'r') as f:
        nb_data = json.load(f)
        total_code_cells = len([cell for cell in nb_data['cells'] if cell['cell_type'] == 'code'])
    
    executed_count = 0
    
    def check_final_cell():
        global executed_count
        executed_count += 1
        if executed_count == total_code_cells:
            # 替换为你的收尾代码
            print("所有代码单元格执行完成,触发收尾操作")
    
    ip = get_ipython()
    ip.events.register('post_run_cell', check_final_cell)
    

    注意:如果运行中修改Notebook(增删单元格),统计会失效。

  • 用%run魔法命令串联逻辑
    将Notebook作为脚本运行,之后直接执行收尾代码,全程在同一内核:

    %run your_notebook.ipynb
    # 此处写收尾代码,会在Notebook所有单元格执行后运行
    print("Notebook运行结束,执行收尾任务")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:03:10