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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Sekineee
December 11, 2025
38
1
Share
Pythonの__pycache__って何?バイトコードの世界を覗いてみた
Sekineee
December 11, 2025
More Decks by Sekineee
See All by Sekineee
Cursorの効果的な最新情報収集戦略
sekineee
0
24
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
270
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
410
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
180
Six Lessons from altMBA
skipperchong
29
4.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
490
Code Review Best Practice
trishagee
74
20k
Paper Plane (Part 1)
katiecoart
PRO
0
6.9k
Amusing Abliteration
ianozsvald
1
160
Context Engineering - Making Every Token Count
addyosmani
9
860
Accessibility Awareness
sabderemane
1
110
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
350
Odyssey Design
rkendrick25
PRO
2
590
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/