我想处理位于s3存储桶中的大量XML文件文件夹。我想在Python中以分布式方式做到这一点。
因此,我首先使用boto3
库定义一个分页器,例如设置100
个元素的页面大小(请参阅doc)
profile = boto3.Session()
client = profile.client('s3')
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(
Bucket='my-bucket',Prefix='my-prefix',
PaginationConfig={'PageSize': 100}
)
然后用concurrent.futures
包创建一个10
线程池,每个线程调用my_process_method
:
def my_process_method(pages):
for page in pages['Contents']:
# ...process...
with concurrent.futures.ThreadPoolExecutor(10) as executor:
executor.map(my_process_method, page_iterator)
我想知道此示例中是否存在一些缺点。并发的boto3
API调用会导致某些问题