Python计时器没有按预期等待

时间:2014-03-06 07:56:14

标签: python multithreading timer

所以,我有这段代码:

t = threading.Timer(570.0, reddit_post(newmsg))
t.start()

开始快速发布Reddit帖子。可悲的是,它没有等待570秒,而是自动执行reddit_post而不实际等待。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:5)

这是因为当你说Timer

时,你实际上正在调用函数而不是将参数传递给t = threading.Timer(570.0, reddit_post(newmsg))

您需要做的是:

threading.Timer(570.0, reddit_post, [newmsg]).start()

请参阅documentation of the Timer class

答案 1 :(得分:1)

更详细地解释:

当你调用Timer构造函数时,你应该给它三个参数。第一个参数应该是您希望计时器等待多长时间。第二个参数应该是可调用的(例如函数)。第三个参数应该是一个用于调用函数的参数列表。

一个例子。

# First we define a function to call.
def say_hello(name):
    print('hello ' + name)

# Now we can call this function.
say_hello('john')

# But when we make a timer to call it later, we do not call the function.
timer = threading.Timer(10, say_hello, ['john'])
timer.start()