是否可以在 pickle / dill python 中仅序列化特定的 classes/functions?

Is it possible to serialize only specific classes/functions in pickle / dill python?

我有一个只想序列化 classes/functions 的应用程序,它是: 无 Python 原始数据类型 没有 Numpy 数据类型 没有 pandas 数据类型。

那么,是否可以过滤要保存在 dill 中的对象? (按类型循环过滤)

谢谢,

虽然这不是一个完整的解决方案(即您可能希望包含更多具有 pandas 数据类型、numpy 数据类型的模块……并且您可能还希望包含更多通过 type 而不是模块过滤来选择内置类型)……我认为它可以满足您的需求。

>>> import dill
>>> import numpy
>>> import pandas
>>> 
>>> target = numpy.array([1,2,3])
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
>>> 
>>> target = [1,2,3]             
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
>>> 
>>> target = lambda x:x   
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
>>> 
>>> class Foo(object): 
...   pass
... 
>>> target = Foo()     
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
'\x80\x02cdill.dill\n_create_type\nq\x00(cdill.dill\n_load_type\nq\x01U\x08TypeTypeq\x02\x85q\x03Rq\x04U\x03Fooq\x05h\x01U\nObjectTypeq\x06\x85q\x07Rq\x08\x85q\t}q\n(U\r__slotnames__q\x0b]q\x0cU\n__module__q\rU\x08__main__q\x0eU\x07__doc__q\x0fNutq\x10Rq\x11)\x81q\x12}q\x13b.'
>>> 

但是,如果你问dill有没有这样的过滤方式,那么答案是否定的。