如何成批循环遍历python列表?
一个文件包含10000行,每行有一个条目。我需要批量处理文件(小块) 在这里做什么,以便下一个循环从第51项到第100项选择条目,依此类推 如果操作不成功并且中途中断,那么只需要从失败的批次(基于DB条目)再次启动循环 我无法编写正确的逻辑代码。我应该保留两份清单吗?还是别的什么?你很接近了如何成批循环遍历python列表?,python,list,Python,List,一个文件包含10000行,每行有一个条目。我需要批量处理文件(小块) 在这里做什么,以便下一个循环从第51项到第100项选择条目,依此类推 如果操作不成功并且中途中断,那么只需要从失败的批次(基于DB条目)再次启动循环 我无法编写正确的逻辑代码。我应该保留两份清单吗?还是别的什么?你很接近了 chunks = (total_count - 1) // 50 + 1 for i in range(chunks): batch = data[i*50:(i+1)*50] 我非常喜欢fun
chunks = (total_count - 1) // 50 + 1
for i in range(chunks):
batch = data[i*50:(i+1)*50]
我非常喜欢
funcy
。此函数将为您将列表分为多个块:
我认为这是最直接、可读的方法。如果您需要重试某个批处理,您可以在循环内重试(串行),也可以在每个批处理中打开一个线程-具体取决于应用程序…
范围(0,总计数,50)
您的输入范围需要是[i*50:(i+1)*50],还有,为什么要等待批处理完成?您可以将流程数据放入线程中?请看一看,如果您不希望在total\u count%50==0
时有任何空批处理,那么这似乎是一个不正确的解决方案。块的数量应该是(total_count-1)//50+1
@AndersTornkvist:抓得好!编辑。
chunks = (total_count - 1) // 50 + 1
for i in range(chunks):
batch = data[i*50:(i+1)*50]
l = [1,2,3,4,5,6,7,8,9,10]
batch_size = 3
for i in range(0, len(l), batch_size):
print(l[i:i+batch_size])
# more logic here
>>> [1,2,3]
>>> [4,5,6]
>>> [7,8,9]
>>> [10}