0
我在GAE上使用python 2.7,並且我需要讀取25到35 MB大小的文件。我他們上傳到Blob存儲區,和我使用下面的代碼來讀取文件:如何更有效地使用blobstore.BlobReader
blob_reader = blobstore.BlobReader(blob_key)
for line in blob_reader:
# ...
我的問題是,我該如何使用BlobReader性能BUFFER_SIZE和位置,以這種更高效地完成。文檔不是很詳細,我沒有很多關於文件I/O的經驗。給出的例子是:
# Instantiate a BlobReader for a given Blobstore value, setting the
# buffer size to 1 MB.
blob_reader = blobstore.BlobReader(blob_key, buffer_size=1048576)
和
# Instantiate a BlobReader for a given Blobstore value, setting the
# initial read position.
blob_reader = blobstore.BlobReader(blob_key, position=4194304)
但目前還不清楚如何使用這使讀取文件速度更快。
謝謝,
所以我試圖讀取的文件大小約爲25 MB,但緩衝區只有1 MB。這是否會讓一些數據未讀?我懷疑b'cos似乎並不是所有來自文件的數據都被讀取,即使任務位於後端,因此不會超時。 – Kwame 2013-02-28 23:29:25
讓我重新解釋一下這個問題。 BloRreader包含或表示一個包含大約80,000行文本的文件,但我只需要閱讀其中的大約100行。有沒有一種有效的方式來掃描或搜索BlobReader,也許有一些正則表達式,然後只讀取那些包含文本匹配的行? – Kwame 2013-03-01 02:56:25
@Kwame緩衝區只是保存從blobstore讀取但尚未返回到應用程序代碼的數據,因此它不必爲讀取的每一行(或字符!)進行RPC調用。它可以是任何大小,你仍然可以閱讀整個文件。 – 2013-03-02 12:17:49