开发Lisp方言:Python中用函数替代await实现异步等待
问题描述
- 正在开发一款仅支持函数调用、不允许使用特殊语法的Lisp方言,当前需要为其添加异步编程功能。
- 已实现通过
asyncio.coroutine将普通函数转换为异步函数,示例代码如下:asyncio.run(asyncio.coroutine(lambda: print('Hello, world!'))()) - 也可在转换后的函数体内调用异步函数:
asyncio.run(asyncio.coroutine(lambda: asyncio.sleep(1))()) - 存在的核心问题:这些异步函数会在后台并行运行。例如在
do块中连续执行两次asyncio.sleep(1)时,程序仅会等待1秒,而非预期的2秒。 - 需求:异步编程中通常用
await/yield from解决该顺序等待问题,但二者属于语法特性而非函数,无法在当前Lisp方言中使用,寻求纯函数式的替代方案。
已查阅的相关问题
- 如何不使用await调用异步函数?
- 如何在Python lambda中使用await?
- 能否不使用await或yield实现Python协程?
- Python中如何自动将标准函数转换为异步函数?
- 如何在普通函数中await一个函数?
内容的提问来源于stack exchange,提问作者KianFakheriAghdam
相关产品推荐
相关产品推荐

