You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:57:28