【generator101】 – pypy的api
admin
2023-07-31 01:50:13
0

从generator到greenlet到stackless再到pypy,各家的语法都不太一样。pypy底层的实现是continulet,看名字应该是continuation的意思。然后在这个基础上实现了stackless的api和greenlet的api。这种实现都是在用户代码里,而不是在解释器的内置库里实现的。

from _continuation import continulet

def func(cont, a, b):
    print(a)
    cont.switch()
    print(b)

cont = continulet(func, \'hello\', \'world\')
cont.switch()
print(\'switched from continulet\')
cont.switch()

代码的输出是

hello
switched from continulet
world

从使用的感觉上非常类似于greenlet。感觉就是把greenlet隐式的当前greenlet的概念变成了显式的第一个函数参数。Java的quasar的语法风格也是类似: http://docs.paralleluniverse.co/quasar/
所以从语法上来说就三类

  • generator这样强制要求yield的
  • greenlet为代表的隐式yield控制权的
  • stackless为代表强买强卖actor编码风格的

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...