2016-08-09 33 views
0

在下面的代码,回调()不是在repsective时间(现在+ 0.2and现在+ 0.1),还塞()调用,这里有什么问题ASYNCIO调度回调

def callback(n,loop): 
     print('Callback {} invoked at {}'.format(n,loop.time())) 

    def stopper(loop): 
     print("Stopper invoked at {}".format(loop.time())) 
     loop.stop() 

    event_loop = asyncio.get_event_loop() 
    try: 
     now =event_loop.time() 
     print('clock time: {}'.format(time.time())) 
     print('loop time: {}'.format(now)) 
     print('Registering callbacks') 
     event_loop.call_later(now + 0.2,callback,1,event_loop) 
     event_loop.call_later(now + 0.1,callback,2,event_loop) 
     event_loop.call_later(now + 0.3,stopper,event_loop) 
     event_loop.call_soon(callback,3,event_loop) 
     print('Entering event loop') 
     event_loop.run_forever() 
    finally: 
     print('Closing event loop') 
     event_loop.close(); 
+0

请更好地描述“不在各自的时间”意味着什么。你什么时候被调用,它什么时候被调用? – deceze

+0

callback()在当前+0.2和现在+0.1不被调用 – Rajeev

回答

2

.call_later(delay, cb, *args)需要delay参数,以秒为单位的时间增量(float)。

但您将now + delay传递给这些调用。

任何一个下降now或替换.call_later().call_at()