12.2task取消和子协程调用原理
Posted zydeboke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12.2task取消和子协程调用原理相关的知识,希望对你有一定的参考价值。
task取消
1 import asyncio 2 import time 3 4 5 async def get_html(sleep_time): 6 print(‘waiting‘) 7 await asyncio.sleep(sleep_time) 8 print(‘done after s‘.format(sleep_time)) 9 10 11 if __name__ == ‘__main__‘: 12 task1 = get_html(2) 13 task2 = get_html(3) 14 task3 = get_html(3) 15 16 tasks = [task1, task2, task3] 17 18 loop = asyncio.get_event_loop() 19 20 try: 21 loop.run_until_complete(asyncio.gather(*tasks)) 22 except KeyboardInterrupt as e: 23 # KeyboardInterrupt 是按Ctrl+C终止程序时抛出的异常 24 # 获取所有的task 25 all_tasks = asyncio.Task.all_tasks() 26 for task in all_tasks: 27 print(‘cancel task‘) 28 print(task.cancel()) 29 loop.stop() 30 loop.run_forever() 31 finally: 32 loop.close()
waiting waiting waiting cancel task True cancel task True cancel task True
以上是关于12.2task取消和子协程调用原理的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程协程取消 ① ( 协程作用域取消 | 协程作用域子协程取消 | 通过抛出异常取消协程 | Job#cancel 函数 | 自定义异常取消协程 )
Kotlin 协程协程取消 ① ( 协程作用域取消 | 协程作用域子协程取消 | 通过抛出异常取消协程 | Job#cancel 函数 | 自定义异常取消协程 )
Kotlin 协程协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )
Kotlin 协程协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )