【发布时间】:2021-10-24 01:02:39
【问题描述】:
在学习asyncio的过程中,我犯了一个错误,链接到变量“task1”3次。
import asyncio
import time
async def say_after(delay, what):
await asyncio.sleep(delay)
print(what)
async def main():
print(f"start at {time.strftime('%X')}")
task1 = asyncio.create_task(say_after(1, 'a'))
task1 = asyncio.create_task(say_after(2, 'aba'))
task1 = asyncio.create_task(say_after(3, 'faf'))
await task1
#await task2
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
但是当我运行代码时,我得到了这个输出
start at 19:05:19
a
aba
faf
finished at 19:05:22
为什么它不只打印最后创建的任务? 为什么第一个和第二个任务没有清除?
在清晰的python中,如果我这样写:
page = 0
page = 1
page = 2
print(page)
我会得到“2”,因为之前指向对象的链接将从内存中删除。
为什么不一样?它是如何工作的?
【问题讨论】:
标签: python-asyncio