Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonの__pycache__って何?バイトコードの世界を覗いてみた
Search
Sekineee
December 11, 2025
41
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pythonの__pycache__って何?バイトコードの世界を覗いてみた
Sekineee
December 11, 2025
More Decks by Sekineee
See All by Sekineee
Cursorの効果的な最新情報収集戦略
sekineee
0
28
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Building an army of robots
kneath
306
46k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
330
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
170
The Language of Interfaces
destraynor
162
27k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Evolving SEO for Evolving Search Engines
ryanjones
0
230
Transcript
Pythonの__pycache__って何? バイトコードの世界を覗いてみた 2025/12/11 みんなのPython勉強会#119 関根 白麗 @sekineee_
関根 白麗 株式会社スリーシェイク Sreake事業部アプリケーション開発支援チーム • 生成AIアプリケーションの開発 • エンジニア1年目から、業務ではずっとPythonを使用 自己紹介
技術的負債を解消し、イノベーションを加速させる SREの知⾒を武器にするアプリケーションエンジニア募集 OUR MISSION インフラをシンプルにしてイノベーションが起こりやすい世界を作る THE CHALLENGE モノリスを解きほぐし 未来を⾒据えた アーキテクチャを設計
YOUR GROWTH SREのエキスパート と共に市場価値の⾼い 技術を本番環境で実践 OUR CULTURE 技術的負債から逃げず オーナーシップを持つ プロフェッショナル集団 採用ページ
なぜこのテーマにしたか エンジニア1年目のある日、プロジェクトを見ていたら… 何だコイツ。。。 →調べてみたら、キャッシュなのであまり気にしなくて良さそう→放置() ↓(数年後) →LT発表のテーマどうしよう。。→あ、__pycache__ 深掘ろう!
そもそも__pycache__とは何か • Pythonが自動生成するディレクトリ • モジュール(.py)の読み込みを高速化するためのキャッシュ • バイトコードを保存(.pyc) • いつ作成・更新されるか? ◦
プログラム実行時に、モジュールが初めてインポートされたとき ◦ キャッシュが作られてから、モジュールに変更を加えた後に、 プログラムを実行したとき 参考) https://docs.python.org/ja/3.14/tutorial/modules.html#compiled-python-files https://docs.python.org/ja/3.14/faq/programming.html#how-do-i-create-a-pyc-file
なぜ速くなるのか? キャッシュなし キャッシュあり ソースコード(.py)を読み込む コンパイル (使用するモジュールを 全てコンパイル) Python仮想マシンが バイトコードを逐次実行 ソースコード(.py)を読み込む
Python仮想マシンが バイトコードを逐次実行 コンパイル (コンパイル済みのモジュールを 使用するので時間短縮)
バイトコードとは? • ソースコードとネイティブ・コード(マシン語)の中間コード • 仮想マシンがバイトコードを読み取って実行 • 異なるOSやハードウェアでも同じファイルが動く(※Pythonは違う) ソースコード(.py) ネイティブ・コード(マシン語) バイトコード(中間コード)
バイトコード Windows + Intel CPU ネイティブ・ コードで実行 仮想マシン macOS + Apple Silicon ネイティブ・ コードで実行 Linux + ARM CPU ネイティブ・ コードで実行 仮想マシン 仮想マシン コンパイル 仮想マシンが解釈・実行
__pycache__の中身を見る:Hex Editorを使用 • .pycファイルはバイナリ形式であるため、そのままでは読めない • Hex Editor(バイナリエディタ)で開くと、生のバイト列を確認可 ソースコード バイトコード
__pycache__の中身を見る:disモジュールを使用 • disモジュールは、バイトコードを人間が読める形式に逆アセンブルする 標準モジュール • コマンドラインやスクリプト内で使用可能 (例:python3 -m dis file.py)
• 行番号、命令、引数などが表示され、処理内容を理解しやすい 行番号 バイト位置 命令 引数
まとめ • __pycache__は実行速度向上のためのキャッシュ • バイトコードが保存される(.pyc) • キャッシュがある場合は、ソースコードからバイトコードへの再度の コンパイルは回避される
ありがとうございました ご質問・ご相談はお気軽にお問い合わせください @sekineee_ | https://3-shake.com/