在没有文件系统的情况下序列化 Python 个对象

Serialize Python objects without file system

我想序列化经过训练的 scikit 管道对象以重新加载它以进行预测。我看到的 pickle 和 joblib dump 是两种常用的方法,而 joblib 是更可取的方法。

在我的例子中,我想将序列化的 python 对象存储在数据库中并从那里加载它,反序列化它并将其用于预测。是否可以在没有任何文件系统访问权限的情况下序列化对象?

是的,对于 pickle 库,您可以使用 pickle.dumps 而不是 pickle.dump 来获取对象的序列化版本。

serialized_object = pickle.dumps(object)

这个 returns 一个 bytes 对象,然后您应该能够将其存储在您的数据库中,可能会在这样做之前将其转换为 base64,或者直接转换。

你可以这样做:

import joblib
from io import BytesIO
import base64
with BytesIO() as tmp_bytes:
    joblib.dump({"test": "test"}, tmp_bytes)
    bytes_obj = tmp_bytes.getvalue()
    base64_obj = base64.b64encode(bytes_obj)

那么,bytes_obj就是一个bytes对象。而 base64_obj 是 base64 版本。 Select你喜欢什么。