我正在尝试在龙卷风主循环中添加多个回调。但是当我运行这段代码时:
def task(num):
print 'task %s' % num
if __name__ == '__main__':
for i in range(1,5):
tornado.ioloop.IOLoop.instance().add_callback(callback=lambda: task(num=i))
tornado.ioloop.IOLoop.instance().start()
我得到输出 5 次:'task 5',而不是 task 1.. task 5。当我像这样更改main时:
tornado.ioloop.IOLoop.instance().add_callback(callback=lambda: task(1))
tornado.ioloop.IOLoop.instance().add_callback(callback=lambda: task(2))
tornado.ioloop.IOLoop.instance().add_callback(callback=lambda: task(3))
tornado.ioloop.IOLoop.instance().add_callback(callback=lambda: task(4))
一切正常(我在输出中得到 task1-task5)。在第一种情况下我做错了什么?