【问题标题】:tornado PeriodicCallback: provide callback with arguments?tornado PeriodicCallback:提供带参数的回调?
【发布时间】:2014-11-07 11:16:05
【问题描述】:

函数tornado.ioloop.PeriodicCallback(callback, callback_time, io_loop=None) 说我不能为callback 函数添加参数,但是如果我真的需要用参数调用callback 怎么办?有解决办法吗?

【问题讨论】:

    标签: python tornado


    【解决方案1】:

    是的,使用 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”表达式的行为相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多