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
1
19
Pythonの__pycache__って何?バイトコードの世界を覗いてみた
Sekineee
December 11, 2025
Tweet
Share
More Decks by Sekineee
See All by Sekineee
Cursorの効果的な最新情報収集戦略
sekineee
0
20
Featured
See All Featured
Docker and Python
trallard
47
3.7k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
120
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
99
Ethics towards AI in product and experience design
skipperchong
1
170
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
140
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.9k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
99
Crafting Experiences
bethany
0
32
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Paper Plane
katiecoart
PRO
0
45k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
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/