Python 为什么我的同步作业代码不起作用
我已经写了下面的代码段,每2秒钟启动一次函数。但是,这似乎不起作用。为什么?Python 为什么我的同步作业代码不起作用,python,multithreading,Python,Multithreading,我已经写了下面的代码段,每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 "refres
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()
您还需要在self
上设置value
,或使用局部变量作为参数:
def AX(self):
self.value = 12
obj = B()
Timer(1, obj.BY, [self.value]).start()
或:
这张照片是:
>>> A().AX()
>>> refreshed : 12
请注意,Timer()
实例将只调用一次obj。通过
,它不会重复调用该函数
您需要在每次调用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()
非常抱歉,我已经紧急写信了。所以我已经编辑了我的错误,请看。感谢您的帮助我应该怎么做才能让它反复调用obj.BY?@demilg:每次调用
BY
时都创建一个新计时器。我应该在哪里创建?在BY方法中?如果我在BY方法中写了它,我如何停止无限循环?你需要在问题描述中更清楚。“似乎不起作用”是什么意思?您是否收到错误,或者所发生的只是“刷新”未打印?@MartijnPieters刷新消息不会在屏幕上发出。我很高兴sorry@MartijnPieters您看到错误了吗?我在运行代码时看到刷新
消息,但带有无
值。见下面我的答案。
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()