如何等待一个普通函数中的异步函数,稍后将在 python 中转换为协程

问题描述 投票:0回答:0

我正在制作一种 lisp 方言,我不能使用任何特殊语法,只能使用函数。我正在尝试添加异步编程。

我可以使用

asyncio.coroutine
将函数转换为异步函数。

asyncio.coroutine(lambda: print('Hello, world!'))

我也可以在它的内部使用异步函数。

asyncio.coroutine(lambda: asyncio.sleep(1))

但问题是它们将在后台运行。因此,如果通过使用

do
块,我执行两次
asyncio.sleep(1)
,程序将只等待 1 秒,因为它们都在后台运行。

这是在异步编程中使用

await
/
yield from
的时候,但它是语法而不是函数,因此我不能使用它。我正在寻找功能替代品。

ChatGPT 无法解决它,我查看了以下 StackOverFlow 帖子。

  1. 如何在不等待的情况下调用异步函数?
  2. 如何在 python lambda 中使用 await
  3. Python协程可以不用await或者yield实现吗?
  4. Python中标准函数自动转换为异步函数
  5. 如何在正常函数中等待一个函数
python asynchronous async-await python-asyncio
© www.soinside.com 2019 - 2024. All rights reserved.