3

竜巻のメイン ループに複数のコールバックを追加しようとしています。しかし、このコードを実行すると:

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()

I get output 5 times: 'task 5', not task 1.. task 5. When I change main like that:

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))

everything works fine (I get task1-task5 in output). What am I doing wrong in the first case?

4

2 に答える 2