函数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,则更改将反射(reflect)在下一次对“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”表达式相同。

关于python - Tornado PeriodicCallback : provide callback with arguments?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26800035/

10-09 17:16