Python:threading.timer不尊重间隔

时间:2015-08-29 14:17:46

标签: python multithreading timer

这是another question的后续内容,我现在已经找到了解决方案,但由于无关原因,实施似乎并不正常。

我有以下代码:

import time
import datetime
import threading

def scheduled_function(cycle):
    cycle += 1
    print "Cycle " + str(cycle) + " complete."
    print "Next cycle at " +  (datetime.datetime.now() + datetime.timedelta(minutes=5)).strftime("%l:%M%p")

    threading.Timer(300, scheduled_function(cycle)).start() # New cycle every 5 mins
    return

scheduled_function(1)

while(True):
    command = raw_input()
    print command

一般来说,这似乎可以实现我想要的 - 允许用户在后台输入命令,同时定期调用函数来执行某种常规活动。但是,间隔(在这种情况下为300,应该等于5分钟)似乎没有做任何事情,并且程序在一秒左右内达到最大递归深度。 (最大递归对于实际脚本来说不是问题,因为它可能一次不会运行超过几个小时)。

我如何错误地使用threading.Timer?

1 个答案:

答案 0 :(得分:4)

那是因为你马上打电话给我,而不是让Timer给你打电话。

threading.Timer(300, scheduled_function, args=[cycle,]).start()