ftnext / PyConTalkSummary

PyConで聞いたトークのサマリーをIssueに蓄積(arXivTimesリスペクト)
0 stars 0 forks source link

[PyConJP2020]インメモリー ストリーム活用術 #31

Open ftnext opened 4 years ago

ftnext commented 4 years ago

一言でいうと

インメモリストリームでI/Oのボトルネックを解消した例の紹介。

io.XXXIOがopen関数の返り値と同様に扱える(文字列をファイルのように扱える 例:書き込める) ファイルへの読み書き(I/O処理)がなくなるから結果として処理時間が短くなる

https://twitter.com/ftnext/status/1299617124420218880?s=20

発表資料リンク

https://pycon.jp/2020/timetable/?id=203893

発表者/所属

HayaoSuzuki

発表日付

2020/08/29

概要

Pythonではストリームはファイルオブジェクトのこと(用語集:ファイルオブジェクト) =readやwriteのメソッドを持つオブジェクト ファイルオブジェクトは機器とやりとりできる

ref: https://docs.python.org/ja/3/library/io.html (質問した)生バイナリよりバッファ付きのほうが速いので生バイナリは使われないとのこと

openで3つとも扱えるのであまり意識しなくて済む bを付けるとバッファ付きバイナリ openはOSのシステムコールAPIを呼んでいる (OSが提供。ツールで呼び出しを見られる)

今回の例では、ファイルをローカルに保存する必要はない 一時的に保存する手間を省く→早くなるのではないか

インメモリストリームはstrやbytesをファイルオブジェクトのように使える


[以下はオプション]

新規性・差分

トークで知って試したいこと

使用例:ioのstreamの中にzipfileを作り先頭にシークする シークがポイント(インメモリストリームの中にzipなどを作れることの気づき)

感想

雰囲気で使っていたインメモリストリームが整理された(openの返り値と同じなんだと気づいた)

処理は早くなると思うが、メモリは有限なので、メモリに乗り切らないデータについては使えないのではないかと思う