Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 异步IO任务取消。是同步的吗?_Python_Event Loop_Python Asyncio - Fatal编程技术网

Python 异步IO任务取消。是同步的吗?

Python 异步IO任务取消。是同步的吗?,python,event-loop,python-asyncio,Python,Event Loop,Python Asyncio,我知道task.cancel()安排在任务函数中抛出异常。这是以同步方式发生的吗?(因为我不等待task.cancel())。task.cancel()行后面的代码是否可以假定任务将不再运行 一个简单的例子: async def task1(): await asyncio.sleep(3) print("after sleep") async def task2(): t = loop.create_task(task1()) await asyncio.sl

我知道
task.cancel()
安排在任务函数中抛出异常。这是以同步方式发生的吗?(因为我不等待task.cancel())。
task.cancel()
行后面的代码是否可以假定任务将不再运行

一个简单的例子:

async def task1():
    await asyncio.sleep(3)
    print("after sleep")

async def task2():
    t = loop.create_task(task1())
    await asyncio.sleep(1)
    t.cancel()
    # can the following code lines assume that task1 is no longer running?

loop = asyncio.get_event_loop()
loop.run_forever()
可以在task.cancel()行之后编写代码,假定任务将 不再跑了

否。
task.cancel()
仅标记以后要取消的任务。您应该在任务完成后显式地等待它,并捕获
cancelederror
,以确保任务已取消


参见。

通过阅读文档,我会说“不”,它说“这安排在事件循环的下一个周期将CanceledError异常抛出到包装的协同程序中。”