在像prev_counter_data这样的其他变量中存储变量self.data_counter时,我遇到了问题。我只是不能存储当前值--我赋给self.data_counter的变量在某种程度上总是有完全相同的值。
class SimpleSwitch(app_manager.RyuApp):
def __init__(self, *args, **kwargs):
super(SimpleSwitch, self).__init__(*args, **kwargs)
self.data_counter = {}
self.monitor_thread = hub.spawn(self._monitor)
def _monitor(self):
timer = 0
prev_data_counter = self.data_counter
while True:
hub.sleep(5)
timer = timer + 5
# assign current values to self.data_counter in func()
func()
# compare current values to previous values
if (timer%60) == 0:
prev_data_counter = self.data_counter你知道我思维上的缺陷在哪里吗?为什么prev_data_counter总是等于self.data_counter
字典self.data_counter包含像(id,port):traffic这样的信息。我可以通过self.data_counter[id][port] = traffic赋值。
发布于 2020-05-16 00:16:05
当你做self.prev_data_counter = self.data_counter的时候,我们说它们是同一个对象。
尝试:
self.prev_data_counter = copy.copy(self.data_counter)
并添加复制包:import copy
发布于 2020-05-16 00:20:34
你的数据计数器是字典。字典是可变对象。当您将self.data_counter指定给prev_data_counter时,实际上只是保存了对同一字典对象的引用。因此,当您更新self.data_counter时,也会更新prev_data_counter -它们引用的是同一个对象。
您需要创建字典的副本:
prev_data_counter = self.data_counter.copy()https://stackoverflow.com/questions/61823684
复制相似问题