在我的程序中,我需要读取一个非常大的表(它超出了内存存储)并让我自己编写以下构造来从表中读取并做一些工作。虽然我知道很有可能将选择重写为迭代器样式,但它仍然具有以下基本结构:
found = True
start = 0
batch = 2500
while found:
found = False
for obj in Channel.select().limit(batch).offset(start):
found = True
# do some big work...
start += batch
我想做的是有一些不携带尽可能多的笨拙状态变量的东西。关于如何清理这个烂摊子的想法?
仅供参考 - 我也试过这个,不确定我是否更喜欢它:
@staticmethod
def qiter(q, start=0, batch=25000):
obj = True
while obj:
for obj in q.limit(batch).offset(start):
yield obj
start += batch