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

如何在Bash循环任务中缓存main.py避免代码修改影响后续实验

解决实验代码缓存问题的几种方法

针对你遇到的「实验队列中后续任务会读取修改后的main.py」问题,可以通过以下几种方式缓存代码,确保所有实验都使用脚本启动时的代码版本:

方法一:复制代码到临时目录执行

这是最直观的方案,先将当前版本的main.py复制到独立的临时目录,后续所有实验都调用这个副本,完全隔离原文件的修改。

# 创建安全的临时目录
TEMP_DIR=$(mktemp -d)
# 复制当前main.py到临时目录
cp main.py "$TEMP_DIR/"
# 循环执行所有实验,使用缓存的代码副本
for SIZE in 1 2 4 8 16; do
  python "$TEMP_DIR/main.py" $SIZE
done
# 实验完成后可删除临时目录(若需保留副本可注释此行)
rm -r "$TEMP_DIR"

方法二:预编译为字节码执行

Python会将.py文件编译为字节码(.pyc),我们可以提前编译好当前版本的代码,后续直接运行字节码文件,避免读取修改后的原文件。注意字节码与Python版本强相关,不同版本生成的字节码无法通用。

# 预编译main.py生成字节码
python -m py_compile main.py
# 获取生成的字节码文件路径(适配不同Python版本的命名)
PYC_FILE=$(find __pycache__ -name "main.*.pyc")
# 循环执行字节码文件
for SIZE in 1 2 4 8 16; do
  python "$PYC_FILE" $SIZE
done

方法三:打包代码后解压执行

如果你的实验依赖多个文件(比如utils.py、配置文件等),可以将整个代码目录打包,在临时目录解压后执行,确保所有依赖文件都被缓存。

# 打包当前目录下的所有实验代码(按需调整打包文件列表)
tar -czf code_cache.tar.gz main.py
# 创建临时目录
TEMP_DIR=$(mktemp -d)
# 解压缓存包到临时目录
tar -xzf code_cache.tar.gz -C "$TEMP_DIR"
# 循环执行实验
for SIZE in 1 2 4 8 16; do
  # 切换到临时目录执行,避免路径问题
  cd "$TEMP_DIR" && python main.py $SIZE && cd - > /dev/null
done
# 清理打包文件和临时目录
rm code_cache.tar.gz
rm -r "$TEMP_DIR"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:32:50