【发布时间】:2021-05-04 14:15:53
【问题描述】:
我正在使用 Python3 上的 simpy 开发缓存模拟器。我这样创建一个 Request 对象:
req = Request(req_id, mapper_id, task , source, destination, path, req_offset, req_size, task.job.iotype)
并将其传递给以下函数:
def generate_event(req_old, dc, env, event_type):
req = copy.deepcopy(req_old)
del req_old
req.rtype = event_type
req.set_startTime(env.now)
event = env.process(readReqEvent(req, dc, env))
如果我没有对 generate_event 函数中的对象进行深度复制,那么每当我更改一个对象中的字段时,我在第一个对象之后创建的其他对象都会看到更改。 deepcopy 函数是一个耗时的函数,会使整个模拟器变慢。
我的问题是对象应该是独立的并且不应该共享相同的引用。我在这里遗漏了什么吗?
【问题讨论】:
-
如果您希望您的对象是独立的并且不共享相同的引用,那么这就是您需要深度复制它们的原因。