gpt4 book ai didi

python - 将yield生成器添加到python函数中

转载 作者:行者123 更新时间:2023-12-01 01:21:18 26 4
gpt4 key购买 nike

我有这个问题陈述:

为了获得最佳性能,应分批处理记录。创建一个生成器函数“batched”,它将生成 1000 个批处理一次记录,可以按如下方式使用:

  for subrange, batch in batched(records, size=1000):
print("Processing records %d-%d" %(subrange[0], subrange[-1]))
process(batch)

我尝试过这样的:

def myfunc(batched):
for subrange, batch in batched(records, size=1000):
print("Processing records %d-%d" %
(subrange[0], subrange[-1]))
yield(batched)

但我不确定,因为我是 python 生成器的新手,这根本没有在控制台上显示任何内容,没有错误,什么也没有,有什么想法吗?

最佳答案

生成器是懒惰的,应该消耗或引导它才能做某事。

参见示例:

def g():
print('hello world')
yield 3

x = g() # nothing is printed. Magic..

应该这样做:

x = g()
x.send(None) # now will print

或者:

x = g()
x.next()

[编辑]

请注意,当显式执行 .next() 时,最终您会收到 StopIteration 错误,因此您应该捕获它或抑制它

关于python - 将yield生成器添加到python函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com