How do coroutines in Python compare to those in Lua?(Python中的协同例程与Lua中的协同例程相比如何?)
本文介绍了Python中的协同例程与Lua中的协同例程相比如何?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Lua中对协程的支持是由functions in the coroutine table提供的,主要是create、resume和yield。开发人员将这些协程描述为stackful, first-class and asymmetric。
在Python中也可以使用enhanced generators(和yield from)或3.5版中添加的async and await提供协程。
Python中的协程与Lua中的协程相比如何?它们也是堆叠的、一流的和不对称的吗?
为什么Python需要这么多构造(async def,async with,async for,asynchronous comprehensions,.)对于协程,而Lua只能为它们提供三个内置函数?
推荐答案
简单的答案是它们是不同的语言。是的,Python协程是堆栈的、一流的和不对称的。查看此答案:Coroutine vs Continuation vs Generator
来自Luadocumentation:
有些人称非对称协同例程为半协同例程(因为它们 它们不是对称的,它们并不是真的是同轴的)。然而,其他人 使用相同的术语半协同例程来表示受限实现 在协同例程中,协同例程只有在以下情况下才能暂停执行 它不在任何辅助函数中,也就是说,当它没有 其控件堆栈中的挂起调用。换句话说,只有主体 这样的半协同程序可以产生。Python中的生成器就是一个示例 半协同例程的这个含义。 与对称和非对称协同例程之间的区别不同, 协同程序和生成器之间的区别(如Python中所示) 是一个很深的问题;生成器的功能还不够强大,无法实现 我们可以用true编写的几个有趣的结构 协和程序。Lua提供了真实的、不对称的协同程序。那些更喜欢的人 对称协同例程可以在非对称 Lua的设施。这是一件容易的事。(基本上,每次传输都会 一份收益率,然后是一份简历。)
另请参阅Python开发人员邮件列表中的此讨论:PEP 492: What is the real goal?
这篇关于Python中的协同例程与Lua中的协同例程相比如何?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:Python中的协同例程与Lua中的协同例程相比如何?
基础教程推荐
猜你喜欢
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
