Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

28 lines
822B

  1. import asyncio
  2. import time
  3. async def _task():
  4. print(f"{time.strftime('%H:%M:%S')} task 开始 ")
  5. time.sleep(2)
  6. print(f"{time.strftime('%H:%M:%S')} task 结束")
  7. return "运行结束"
  8. def callback(task):
  9. print(f"{time.strftime('%H:%M:%S')} 回调函数开始运行")
  10. print(f"状态:{task.result()}")
  11. coroutine = _task()
  12. print(f"{time.strftime('%H:%M:%S')} 产生协程对象 {coroutine},函数并未被调用")
  13. task = asyncio.ensure_future(coroutine) # 返回task对象
  14. task.add_done_callback(callback) # 为task增加一个回调任务
  15. loop = asyncio.get_event_loop()
  16. print(f"{time.strftime('%H:%M:%S')} 开始调用协程任务")
  17. start = time.time()
  18. loop.run_until_complete(task)
  19. end = time.time()
  20. print(f"{time.strftime('%H:%M:%S')} 结束调用协程任务, 耗时{end - start} 秒")