如何在Google Colab中执行Python文件并保留Runtime内存状态
解决方案
要同时满足在Notebook中执行Python文件和保留Runtime内存状态,核心是让Python文件的代码在Notebook的主进程中执行,而非启动独立子进程。以下是两种可行的实现方式:
方法1:使用exec()直接执行文件内容
这种方式会把Python文件的代码加载到当前Notebook进程中执行,所有变量、函数都会直接存入Runtime内存。
- 用Notebook魔法命令
%%writefile将单元格代码写入Python文件:
%%writefile my_script.py # 示例代码:定义变量和函数 user_data = {"name": "Alice", "age": 30} def calculate_age_in_5_years(): return user_data["age"] + 5
- 读取文件内容并通过
exec()执行:
with open("my_script.py", "r", encoding="utf-8") as f: script_code = f.read() exec(script_code)
- 验证Runtime状态:
print(user_data) # 输出: {'name': 'Alice', 'age': 30} print(calculate_age_in_5_years()) # 输出: 35
方法2:动态导入并重载模块
如果需要反复修改Python文件并重新执行,这种方式更灵活,且模块内的状态会保留在Runtime中。
- 写入模块文件:
%%writefile stats_module.py total = 0 def add_num(num): global total total += num return total
- 导入并执行模块代码:
import stats_module from importlib import reload # 执行模块函数 print(stats_module.add_num(10)) # 输出: 10
- 修改
stats_module.py后,重载模块以更新代码(状态会延续):
# 假设修改了stats_module.py,比如新增了multiply_num函数 reload(stats_module) print(stats_module.add_num(5)) # 输出: 15(延续之前的total=10的状态) print(stats_module.multiply_num(3)) # 执行新增的函数
为什么常规!python xxx.py命令不行?
用!python xxx.py会启动一个独立的子进程执行脚本,子进程的内存空间和Notebook主进程完全隔离,执行完后子进程销毁,所有变量、状态不会同步到Notebook的Runtime中。
内容的提问来源于stack exchange,提问作者josealvarez97
相关产品推荐
相关产品推荐

