将收益产生器添加到python函数

时间:2018-12-16 19:04:18

标签: python generator yield

我有这个问题说明:

为获得最佳性能,应分批处理记录。 创建一个生成器函数“批处理”,将产生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生成器的新手,所以这根本不会在控制台上显示任何内容,没有错误,没有任何想法?

1 个答案:

答案 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错误,因此您应该捕获或抑制它