注意,这个答案是 此处 的工作原理和预期一样。
我想每隔X秒执行一个函数,并在每次连续运行时递增2秒。
所以举个例子,函数第一次运行时应该是3秒,然后是5秒,然后是7秒,以此类推...
第一次运行--3秒 第二次运行--5秒 第三次运行--7秒,以此类推......
我的代码是
from twisted.internet import task, reactor
timeout = 3 # three seconds
def doWork():
#do work here
pass
l = task.LoopingCall(doWork)
l.start(timeout) # call every three seconds
reactor.run()
你可以使用 reactor.callLater(n, fn, ...)
from twisted.internet import reactor
class Worker:
max_timeout = 11
increment = 2
def __call__(self, interval):
interval += self.increment # <-- increment interval
if interval > self.max_timeout:
interval = self.max_timeout # <-- don't go over max
print(f"do work...{interval} interval")
# call the func after N seconds
reactor.callLater(interval, self, interval)
def main():
worker = Worker()
reactor.callLater(3, worker, 3) # <-- start in 3 seconds
reactor.run()
main()
如果代码中出现了需要停止的地方,那么只要有不调用 reactor.callLater()
.