从不等待 Python 异步函数

里沙德·坦吉姆

我在python的异步框架FastAPI中实现了一个异步函数

该函数看起来像:

async def func2(num):
  time.sleep(3)
  return num

async def func1():
  text = await func2(5)
  print(text)
  print('inside func1')

async def my_async_func():
  print('start')
  await func1()
  print('finish')
  

在这里,当我执行时,my_async_func我期望 asyn 行为和值被打印为

start
finish
inside func1
5

但它同步打印为

start
5
inside func1
finish

协程如何异步处理并发操作和实现?

jizhihaoSAMA

这样做asyncio.create_task,(注:你不能确保打印5inside func1通过打印的顺序。)

试试下面的代码:

import asyncio
import time


async def func2(num):
    time.sleep(3)
    return num


async def func1():
    text = await func2(5)
    print(text)
    print('inside func1')


async def my_async_func():
    print('start')
    asyncio.create_task(func1())
    print('finish')


asyncio.run(my_async_func())

结果:

start
finish
5
inside func1

还要注意 sleep 会让你的线程休眠。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章