假设我的代码是这样的:
while True:
nheight = tc.getblockcount()['count']
和tc.getblockcount..。作为一个rpc调用,结果是一个存储在变量nheight
中的整数。这个值更改了大约30秒,那么如何让它在更改时打印一条语句呢?现在我已经做了这样的事情:
height = tc.getblockcount()['count']
while True:
nheight = tc.getblockcount()['count']
if height != nheight:
print("Val Changed")
height = nheight
time.sleep(0.4)
所以希望当nheight
发生变化时,它会检测到它,因为它不同于height
,后者具有相同的原始值。然后,它更新值height
,这样它就不会因为值更改了一次而一直打印Val Changed
。然后它会休眠0.4秒,然后再次循环
现在的问题是,它会打印"Val Changed“一次,但不会再打印一次,即使值发生了变化(我已经通过插入一些print语句进行了验证)。
有人能帮我做一些东西,当nheight的值改变时打印一些东西吗?
另外,如果可能的话,由于我的其余代码不是使用OOP编写的,而且我对它的理解也不是很好,所以给出的示例没有使用OOP?
(我认为有一种叫做观察者模式的东西可以做到这一点,对吗?)
非常感谢!
发布于 2018-07-20 08:23:14
更新:我在一些帮助下让它工作,问题出在代码的另一部分上,谢谢!
发布于 2018-06-25 06:29:29
因为我不知道tc.getblockcount是什么,所以这里有一个函数,它返回的数字基本相同,但有10%的时间会发生变化
def value_iter():
last_value = 1
while True:
yield last_value
if random.random() < 0.1:
last_value = last_value + 1
def getblockcount(it=value_iter()):
return next(it)
height = getblockcount()
while True:
nheight = getblockcount()
print(nheight,"=?=",height)
if nheight != height:
print("UPDATE!\n\n")
height=nheight
正如你所看到的,如果你复制它,它会像预期的那样工作
https://stackoverflow.com/questions/51014427
复制相似问题