python
1def get_s3file(bucket_name, key): 2 s3 = boto3.resource('s3') 3 s3obj = s3.Object(bucket_name, key).get() 4 5 return io.TextIOWrapper(io.BytesIO(s3obj['Body'].read()))
S3からCSVをオンメモリで読み込む処理です。
なるべくメモリを削減できるようストリームで処理していきたいです。
そのためBytesIOを作成し、TextIOWrapperで文字列ストリームに変換しています。
ここで疑問なのですがBytesIOのインスタンスを生成する際にs3obj['Body'].read()としている時点でオブジェクトはメモリ上に全て展開されてしまっているのでしょうか?
もしそうなら既にメモリ上に展開されているのでその後BytesIO,TextIOWrapperに渡してストリームを生成する必要がないかと思ってきました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/18 07:15
2021/09/19 03:12
2021/09/19 11:02