我需要找到一種方法來從包含字符串的列表中讀取x個字節的數據。列表中的每個項目都是〜36MB。我需要能夠遍歷列表中的每個項目,但一次只能抓取約1KB的項目。如何只讀部分Python中的字符串列表
本質上,它看起來是這樣的:
for item in list:
#grab part of item
#do something with that part
#Move onto next part, until you've gone through the whole item
我當前的代碼(這樣的作品,但似乎是相當緩慢和低效)是這樣的:
for character in bucket:
print character
packet = "".join(character)
if(len(packet.encode("utf8")) >= packetSizeBytes):
print "Bytes: " + str(len(packet.encode("utf8")))
return packet
我想知道如果存在任何類似f.read(bufSize)
,但對於字符串。
不知道,如果是相關的,但更多的情況下,這是我在做什麼:
我是從一個非常大的文件(幾個GB)的數據讀入小得多(和更易管理的塊)。我使用f.read(chunkSize)
對文件進行了塊存儲,並將它們存儲爲buckets
。但是,即使這些存儲桶對於我最終需要處理的數據來說仍然太大,所以我只想一次抓取部分存儲桶。
本來,我繞過了整個桶的東西,只是將文件分塊成足夠小的塊,用於我的目的。然而,這導致我不得不將文件分塊數十萬次,這有點慢。我現在的希望是能夠讓水桶排隊,這樣當我用一桶水做什麼時,我就可以開始閱讀別人。如果這聽起來令人困惑,讓我知道,我會盡力澄清。
感謝
爲什麼要存儲這些塊...爲什麼不像處理f.read(chunkSize)時那樣處理每一位數據並在完成後丟棄它? –
這就是我最初做的,雖然有更小的塊。處理數據的過程似乎比「預加載」某些數據要慢,以便我可以在讀取另一個數據的同時處理一段數據。本質上,我試圖用數據加倍緩衝 – Swoldier
@Swoldier你是否通過計時和分析來驗證你的印象是否緩慢? :) –