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

如何在不重跑21小时代码的情况下获取decoder.py中的x、y变量?

无需重跑获取变量的解决方案

方案1:利用Jupyter的%run命令保留变量

如果你还没关闭当前Notebook内核,立刻停止!python decoder.py的执行,改用Jupyter内置的%run命令执行脚本:

%run decoder.py

当脚本因缺少matplotlib报错时,前面已经计算完成的stat_dict、x、y会保留在Notebook的命名空间中,你可以直接在后续单元格中打印或使用这些变量。

方案2:添加变量持久化逻辑,跳过耗时计算

如果内核已关闭或进程已结束,需要修改decoder.py添加变量保存与加载逻辑,避免重新计算:

  1. 在生成x、y的代码后,添加变量保存代码:
    import pickle
    # 将需要的变量保存到本地文件
    with open('decoder_data.pkl', 'wb') as f:
        pickle.dump({'stat_dict': stat_dict, 'x': x, 'y': y}, f)
    
  2. 找到生成stat_dict的耗时计算代码块,添加判断逻辑,优先加载已保存的变量:
    import os
    import pickle
    
    # 检查是否有已保存的变量文件
    if os.path.exists('decoder_data.pkl'):
        # 直接加载变量,跳过21小时的计算
        with open('decoder_data.pkl', 'rb') as f:
            saved_data = pickle.load(f)
            stat_dict = saved_data['stat_dict']
            x = saved_data['x']
            y = saved_data['y']
    else:
        # 原有的耗时计算逻辑,生成stat_dict
        # --- 这里是你原本需要21小时的代码 ---
        x = stat_dict['plog']
        y = stat_dict['cycles']
        # 保存变量到文件
        with open('decoder_data.pkl', 'wb') as f:
            pickle.dump({'stat_dict': stat_dict, 'x': x, 'y': y}, f)
    
  3. 补全matplotlib的导入语句(import matplotlib.pyplot as plt),添加绘图代码,然后在Notebook中用%run decoder.py执行,脚本会直接加载已保存的变量,无需重新计算。

方案3:临时添加调试断点

如果不想修改太多代码,可在绘图代码前添加调试断点,当脚本执行到断点时手动保存变量:
在decoder.py的绘图代码前添加:

import pdb; pdb.set_trace()

然后用%run decoder.py执行脚本,当进入pdb调试界面时,输入以下命令保存变量:

import pickle
with open('temp_vars.pkl', 'wb') as f:
    pickle.dump({'x': x, 'y': y}, f)

输入q退出调试后,在Notebook中加载保存的文件即可获取变量:

import pickle
with open('temp_vars.pkl', 'rb') as f:
    vars = pickle.load(f)
x = vars['x']
y = vars['y']

内容的提问来源于stack exchange,提问作者Aulan Lucrèce

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:21:57