Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonの__pycache__って何?バイトコードの世界を覗いてみた
Search
Sekineee
December 11, 2025
1
10
Pythonの__pycache__って何?バイトコードの世界を覗いてみた
Sekineee
December 11, 2025
Tweet
Share
More Decks by Sekineee
See All by Sekineee
Cursorの効果的な最新情報収集戦略
sekineee
0
19
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
180
Leo the Paperboy
mayatellez
0
1.2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
250
RailsConf 2023
tenderlove
30
1.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Ruling the World: When Life Gets Gamed
codingconduct
0
94
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
64
Un-Boring Meetings
codingconduct
0
160
Crafting Experiences
bethany
0
21
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/