我有这个问题说明:
为获得最佳性能,应分批处理记录。 创建一个生成器函数“批处理”,将产生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生成器的新手,所以这根本不会在控制台上显示任何内容,没有错误,没有任何想法?
答案 0 :(得分:2)
发电机是懒惰的,应该使用它或对其进行引导以使其起作用。
查看示例:
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
错误,因此您应该捕获或抑制它