【发布时间】:2014-11-07 11:16:05
【问题描述】:
函数tornado.ioloop.PeriodicCallback(callback, callback_time, io_loop=None) 说我不能为callback 函数添加参数,但是如果我真的需要用参数调用callback 怎么办?有解决办法吗?
【问题讨论】:
函数tornado.ioloop.PeriodicCallback(callback, callback_time, io_loop=None) 说我不能为callback 函数添加参数,但是如果我真的需要用参数调用callback 怎么办?有解决办法吗?
【问题讨论】:
是的,使用 lambda 或 functools.partial。部分函数的文档是here。
from tornado import ioloop
def my_function(a, b):
print a, b
x = 1
y = 2
periodic_callback = PeriodicCallback(
lambda: my_function(x, y),
10)
ioloop.IOLoop.current().start()
在本例中,如果您更改 x 或 y,更改将反映在下一次调用“my_function”中。另一方面,如果您“导入 functools”并且:
periodic_callback = PeriodicCallback(
functools.partial(my_function, x, y),
10)
随后对 x 和 y 值的更改将不会出现在“my_function”中。最后,您可以这样做:
def my_partial():
my_function(x, y)
periodic_callback = PeriodicCallback(
my_partial,
10)
这与前面的“lambda”表达式的行为相同。
【讨论】: