我已经编写了下面的代码段来每2秒启动一次功能。但是,它似乎不起作用。为什么呢?
from threading import Timer
class A :
value = None
def AX(self):
value = 12
obj = B()
Timer(1,obj.BY, [self.value]).start()
class B:
def BY(self,value):
print "refreshed :", value
if __name__=='__main__':
obj = A()
obj.AX()
答案 0 :(得分:0)
您还需要在value
上设置 self
,或使用局部变量作为参数:
def AX(self):
self.value = 12
obj = B()
Timer(1, obj.BY, [self.value]).start()
或:
def AX(self):
value = 12
obj = B()
Timer(1, obj.BY, [value]).start()
打印:
>>> A().AX()
>>> refreshed : 12
请注意Timer()
实例只会调用obj.BY
一次,它不会重复调用该函数。
每次调用BY
时都需要重置计时器:
class B:
def BY(self,value):
print "refreshed :", value
Timer(2, self.BY, [value]).start()
将创建一个循环。如果您需要在某个时刻终止该循环,则需要在BY
中单独测试该条件:
class B:
somecondition = False
def BY(self,value):
print "refreshed :", value
if self.somecondition:
return # do not set the timer again
Timer(2, self.BY, [value]).start()