如何在Google Colab(Python)中保存包含方法的对象?
在Google Colab中保存/加载耗时构建的Python对象到云端硬盘
完全可以实现,具体步骤如下:
1. 挂载Google云端硬盘
首先需要在Colab中授权挂载你的云端硬盘,获得读写权限:
from google.colab import drive drive.mount('/content/drive')
运行后按照提示完成授权操作,挂载成功后即可通过/content/drive/MyDrive/路径访问你的云端文件。
2. 序列化保存与加载对象
对于包含大量方法的复杂对象,推荐使用joblib(处理大对象的效率优于标准库的pickle),也可以选择pickle作为备选方案。
使用joblib(推荐)
保存对象
假设你的目标对象名为my_heavy_object,指定云端路径完成保存:
import joblib # 替换为你实际想要保存的云端路径,建议新建专门文件夹存放 save_path = '/content/drive/MyDrive/Colab_Saved_Objects/my_heavy_object.joblib' joblib.dump(my_heavy_object, save_path)
加载对象
在新的Colab笔记本中,先挂载云端硬盘,再加载对象:
import joblib load_path = '/content/drive/MyDrive/Colab_Saved_Objects/my_heavy_object.joblib' my_heavy_object = joblib.load(load_path)
使用pickle(备选)
保存对象
import pickle save_path = '/content/drive/MyDrive/Colab_Saved_Objects/my_heavy_object.pkl' with open(save_path, 'wb') as file: pickle.dump(my_heavy_object, file)
加载对象
import pickle load_path = '/content/drive/MyDrive/Colab_Saved_Objects/my_heavy_object.pkl' with open(load_path, 'rb') as file: my_heavy_object = pickle.load(file)
关键注意事项
- 加载对象时,当前环境必须存在该对象的类定义(比如已导入定义该类的模块),否则会触发
AttributeError。 - 如果对象包含无法序列化的元素(如打开的文件句柄、网络连接),需要先清理这些内容,或者在类中自定义
__getstate__和__setstate__方法处理序列化逻辑。 - 确认云端路径准确,可通过Colab左侧文件浏览器查看并复制目标路径。
内容的提问来源于stack exchange,提问作者Jonathan Alexander Munoz Marti
相关产品推荐
相关产品推荐

