Open ftnext opened 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の返り値と同じなんだと気づいた)
処理は早くなると思うが、メモリは有限なので、メモリに乗り切らないデータについては使えないのではないかと思う
一言でいうと
インメモリストリームで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の返り値と同じなんだと気づいた)
処理は早くなると思うが、メモリは有限なので、メモリに乗り切らないデータについては使えないのではないかと思う