我在测试Python3.7的异步/等待函数,并编写了如下简单代码:
import asyncio
import time
async def first():
print('FIRST')
async def second():
time.sleep(2)
print('SECOND')
async def main():
asyncio.create_task(second())
asyncio.create_task(second())
asyncio.create_task(second())
asyncio.create_task(first())
asyncio.create_task(first())
asyncio.create_task(first())
asyncio.run(main())
当我运行此代码时,它会打印以下内容:
SECOND
SECOND
SECOND
FIRST
FIRST
FIRST
这不是我所期望的。我认为FIRST
应该先打印,因为它们没有延迟。但是,create_task
在继续执行文本异步任务之前,将等待second()
完成
是否可以执行异步任务而不让它们彼此等待
不能使用
time.sleep()
函数,因为它不是异步的,导致整个程序实际处于休眠状态。使用asyncio.sleep()
函数并等待它以使其异步运行:结果应该是:
您必须使用
gather()
函数并稍微修改代码。您还必须使用await
关键字相关问题 更多 >
编程相关推荐