fast_deepcopy

(函数来自 pyomo.common.autoslots)

pyomo.common.autoslots.fast_deepcopy(obj, memo)[source]

copy.deepcopy() 的更快实现

Python 的默认深拷贝实现有几个特性比它们需要的要慢。这是一个深拷贝的实现,提供了特殊处理来规避一些深拷贝()中最慢的部分。

注意

此实现不会在深拷贝操作结束之前积极保持复制状态的活动。特别是,dictlisttuple 的处理程序不会将它们的源对象注册到备忘录中。这是可以接受的,因为 fast_deepcopy() 只在确保源对象将持续存在的情况下被调用:

  • AutoSlots.__deepcopy_state__() 明确保留了源状态

  • Component.__deepcopy_field__() 仅由 AutoSlots.__deepcopy_state__() 调用 -

  • IndexedComponent._create_objects_for_deepcopy() 正在 从源 _data 字典中深度复制原始键(这不是一个临时对象,将会持续存在)

如果其他消费者希望使用此功能(例如,在他们实现__deepcopy__时),他们必须记住他们有责任确保任何临时源obj持续存在。