簡體   English   中英

分塊處理大數據的最佳方法

[英]best way to process large data in chunks

例如,我喜歡超過 20000 條記錄。 和數據是這樣的

data = [{'id': 1} , {'id':2} , {'id':3} .... 20000]

現在我想以 1000 的塊上傳這些數據。 那么在 1000 塊中執行此操作的最佳方法是什么,這將產生最少的開銷。

最好的方法是使用生成器。 這些是通用迭代器,允許您使用自定義行為遍歷對象。

在您的情況下,一個簡單的解決方案是使用range返回任何特定大小的生成器,例如:

range(1, len(data), 1000)

將生成值 1, 1001, 2001, ...

如果您在循環中使用它,則可以將特定范圍傳遞給處理程序方法,例如:

batch = 1000
for i in range(1, len(data), batch):
  handle(data[i:i+batch])

您可以使用生成器批量處理數據

def generateChunks(data,    batchsize):
  for i in range(0, len(data),batchsize):
    yield data[i:i+batchsize]

處理數據

chunks = generateChunks(data, 1000)
for i, chunk in enumerate(chunks):
  print('chunk# ', i ,': ', chunk)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM