以下是背景,让您了解我的工作内容:
我正在使用的代码以WebsocketClient()
类作为外部类开始,外部类是通过在主类中将其作为对象调用而继承的(除非我误解了它的工作原理)。然后它使用on_message()
方法来做某些事情,并根据来自websocket服务器的消息更新一个全局变量(红黑二叉树)(从websocket消息中添加的全局变量的键通常是随机的,并且每秒更改/更新多次。)
main类有一个内部类,它读取RBTree并显示其中的信息
所有这些都很好用,这是别人的代码(都是开源的)。但是当我向主类添加一个方法来读取RBTree并从中输出不同的信息时,RBTree似乎停止了更新
class MainClass(WebsocketClient):
def __init__(self):
super(MainClass, self).__init__()
self._glbtree = RBTree()
def on_message(self, message):
#
# stuff to update _glbtree
#
self.new_method()
def new_method(self):
print(self._glbtree.min_key())
class InnerClass(MainClass):
def __init__(self):
super(MainClass, self).__init__()
def on_message(self, message):
super(MainClass, self).on_message(message)
print(self._glbtree.max_key())
iclass = InnerClass()
iclass.start()
try:
while True:
time.sleep(10)
except KeyboardInterrupt:
iclass.close()
内部类运行并打印.max_key()
的最新值,但是当我取消new_method(self)
注释并注释掉整个内部类和最后七行时,它会加载_glbtree
一次并更新它拥有的键,但是一旦我的new_method()
开始运行,就不会获取新键或删除旧键。因此,它运行的次数越多,.min_key()
的结果就越旧(如中所示,很可能还有其他应该从_glbtree
添加或删除的键应该出现,但是没有出现)
注意:还有很多其他的事情(计算等)正在发生,但是上面的代码很有希望能让你了解发生了什么
目前没有回答
相关问题 更多 >
编程相关推荐