2013-02-26 2 views
0

저는 GAE에서 파이썬 2.7을 사용하고 있으며 크기가 25 ~ 35MB 인 파일을 읽을 필요가 있습니다. 나는 Blob 저장소로 업로드 한, 나는 파일을 읽기 위해 다음 코드를 사용하고이보다 효율적으로 수행하는 내가 BlobReader 속성 BUFFER_SIZE 사용할 수있는 방법,blobstore.BlobReader를보다 효율적으로 사용하는 방법

blob_reader = blobstore.BlobReader(blob_key) 
for line in blob_reader: 
    # ... 

내 질문은 위치. 문서는 매우 자세하지 않으며 파일 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) 

그러나 그것은 빠르게 파일을 읽을 수 있도록하려면이 옵션을 사용하는 방법을하지 분명하다. 더 효율적일 것이다 라인을 읽을 때 더 큰 버퍼 크기가 적은 Blob 저장소 조작 될 것이다

답변

1

감사합니다. 편안하게 버퍼 크기를 설정하면 정렬됩니다.

+0

그래서 내가 읽으려고하는 파일의 크기는 약 25MB이지만 버퍼는 1MB입니다. 일부 데이터가 읽히지 않을 예정입니까? 나는 그 파일의 모든 데이터가 백엔드에 있더라도 타임 아웃을하지 않아도 읽혀지는 것 같지 않다. – Kwame

+0

질문을 바꾸게하십시오. BloRreader는 약 80,000 줄의 텍스트가 포함 된 파일을 포함하거나 나타내지 만 약 100 개 정도만 읽으면됩니다. BlobReader를 검색하거나 검색하는 효율적인 방법이 있습니까? 아마도 일부 정규식을 사용하고 일치하는 텍스트가 포함 된 행만 읽는 것일 수 있습니다. – Kwame

+0

@Kwame 버퍼는 방금 BLOBSTORE에서 읽었지만 아직 앱 코드로 반환되지 않은 데이터를 보유하기 때문에 읽고있는 모든 행 (또는 문자!)에 대해 RPC 호출을 할 필요가 없습니다. 크기에 상관없이 전체 파일을 읽을 수 있습니다. –

관련 문제