【发布时间】:2019-07-07 02:05:54
【问题描述】:
我有一个非常简单的python函数:
def list_blobs(bucket, project)
storage_client = storage.Client(project=project)
bucket = storage_client.get_bucket(bucket)
blobs = bucket.list_blobs(prefix='basepath/', max_results=999999,
fields='items(name,md5Hash),nextPageToken')
r = [(b.name, b.md5_hash) for b in blobs]
blob 列表包含 14599 个项目,此代码需要 7 秒才能运行。 分析时,大部分时间都浪费在从服务器读取数据上(对 page_iterator._next_page 的调用有 16 次。
那么,我该如何改进呢?迭代代码在库中很深,每个页面的指针都来自前一页,所以我看不出如何并行获取 16 个页面,因此我可以减少这 7 秒。
我在 python 3.6.8,
google-api-core==1.7.0
google-auth==1.6.2
google-cloud-core==0.29.1
google-cloud-storage==1.14.0
google-resumable-media==0.3.2
googleapis-common-protos==1.5.6
protobuf==3.6.1
【问题讨论】:
标签: python google-cloud-storage google-api-python-client