如何复制其中存储了不可腌制对象的实例?
How do I copy an instance that has non-pickleable objects stored within it?
我的实例中有不可腌制的对象。
但是,我希望能够在程序运行时保存实例,以防万一。这样我就可以轻松重启程序了。
我的想法是:
- 将实例副本创建为 new_instance
- 将new_instance中的所有不可pickle对象重写为None
- 泡菜new_instance
- 在指定的时间间隔重复
但是,copy() 和 deepcopy() 不起作用。
copy() 只是出于某种原因将引用分配给原始对象 &
Deepcopy() 给了我同样的错误,即我的实例中的对象不可腌制。
我应该使用另一种选择/更好的方法吗?
有没有办法在 pickle 时忽略某些对象类型,这样我就不需要创建副本、重写和 pickle?
我最终根据 juanpa.arrivillaga 的输入自己编写了逻辑。
我在 class 的 init(self) 中创建了一个空副本。
然后,稍后使用如下函数更新:
def save_copy(self):
for i, j in self.__dict__.items():
# Ignore nonpickeable items
if(type(i) == 'nonpickeable'):
pass
else:
# Set copy dictionary to instance dictionary
# if pickeable
self._copy.__dict__[i] = j
我的实例中有不可腌制的对象。 但是,我希望能够在程序运行时保存实例,以防万一。这样我就可以轻松重启程序了。
我的想法是:
- 将实例副本创建为 new_instance
- 将new_instance中的所有不可pickle对象重写为None
- 泡菜new_instance
- 在指定的时间间隔重复
但是,copy() 和 deepcopy() 不起作用。 copy() 只是出于某种原因将引用分配给原始对象 & Deepcopy() 给了我同样的错误,即我的实例中的对象不可腌制。
我应该使用另一种选择/更好的方法吗? 有没有办法在 pickle 时忽略某些对象类型,这样我就不需要创建副本、重写和 pickle?
我最终根据 juanpa.arrivillaga 的输入自己编写了逻辑。
我在 class 的 init(self) 中创建了一个空副本。 然后,稍后使用如下函数更新:
def save_copy(self):
for i, j in self.__dict__.items():
# Ignore nonpickeable items
if(type(i) == 'nonpickeable'):
pass
else:
# Set copy dictionary to instance dictionary
# if pickeable
self._copy.__dict__[i] = j