python - 嵌套收益率保留每个函数状态
问题描述
我有以下客户端界面:
for e in read_stream(): print(e)
其中 read_stream 控制要从无限流中获取的样本数并产生由所述流产生的值。这是我的应用程序的等效示例:
def foo():
internal_state = 0
while True:
num = randint(0,100000)
if num == 7:
internal_state += 1
print(internal_state)
yield num
def read_stream():
global max_reads
for reads in range(0,max_reads):
print("counter=", str(reads))
num = foo()
yield next(num)
问题是执行时read_stream()
, read_stream() 内部变量被保留,但foo()
变量被覆盖。
我知道更改接口可能是这里最明智的解决方案(取消中间人read_stream()
),但是是否有可能以这样一种方式执行嵌套 yield 以使层次结构的所有级别都运行完整的周期而无需重置?
非常感谢。
解决方案
推荐阅读
- flutter - 使用 Flutter web 生成 PDF 文件
- java - 如何使用圆形和黑色背景放大动画过渡,片段到活动?进入活动后缩小
- excel - VBA如何在表格中添加空白行
- angular - 表达式检查后更改错误
- go - APM Go 代理未向 APM 服务器发送数据
- swift - 共享相册中缺少视频。UIImagePickerController
- amazon-web-services - 如何增加 lambda 拉动 dynamodb 流的频率?
- python - 用于存储类的python数据结构
- ssh - 防止 AWS EMR ssh 连接超时
- sql - 如何将 SQL 行值移动到其他行