PR:この記事にはアフィリエイトリンクが含まれます。
Python本のおすすめを探していて、cProfileによる実務的な高速化まで身につけたい方へ。速そうな書き方を真似る前に、遅い場所を測ってみましょう。改善はそこから始まります。
Pythonの処理時間には、CPU計算のほか、ファイルや通信の待ち時間、メモリ使用量、関数の呼び出し回数も関わります。勘に頼った書き換えでは、期待した時間短縮につながらないこともあります。
書籍ごとに扱う計測手法や想定読者は異なります。日本語で分析手法を深く扱う本、英語で並行処理まで扱う本、Python全般の改善指針を学べる本を表にまとめました。
| 書名 | 言語・対象 | 強み | 参考価格 |
|---|---|---|---|
ハイパフォーマンスPython 第2版 | 日本語・中級以上 | cProfileからCPU・メモリ分析、改善の検証まで | 4,290円(税込・定価) |
Python High Performance: Build high-performing, concurrent, and distributed applications | 英語・Pythonの基本を学んだ人 | ベンチマーク、最適化、並行・分散処理 | 販売先で確認 |
Mastering Python 2E | 英語・中級〜上級 | Python全般の学習に性能分析を加える | 販売先で確認 |
Effective Python 第3版―Pythonプログラムを改良する125項目 | 日本語・中上級 | 実務的な改善指針とプロファイリング | 5,280円(税込・定価) |
遅さの正体
計測を始める前に、何を速くしたいのか決めましょう。1回の実行時間か、一定時間あたりの処理件数か、メモリ消費量か。目標が具体的なら、改善後に確かめる指標もはっきりします。
CPUを長く使う処理と、ネットワークやディスクの返答を待つ処理では、調べる場所が変わります。cProfileは関数の呼び出し時間をまとめますが、待ち時間の原因までは自動で示しません。
実際の利用に近い入力と実行条件で計測してください。小さなサンプルでは速くても、本番データで呼び出し回数やメモリ使用量が増えれば、改善の狙いから外れます。
測った実行時間と入力は記録しておきます。複数回の結果を見ておけば、実行環境の揺れとコード変更の効果を見分けやすくなります。平均値も比較に使えます。
cProfileの要点
cProfileはPython標準ライブラリに含まれるプロファイラです。スクリプトを対象にする場合は、python -m cProfile -s cumulative app.py と実行すると、関数ごとの呼び出し回数と所要時間が表示されます。
結果の tottime は関数自身の処理時間で、呼び出し先にかかった時間は含みません。関数内の計算が重いかを探るときに確認します。
cumtime は子関数の処理時間まで含めた合計です。その数値が大きければ遅い経路の目印になります。ただし、関数自身が原因とは限りません。
累積時間が大きい関数を先に見て、呼び出し回数と自己時間を合わせて読みます。短い処理も何度も実行されるなら、ループやデータ構造の変更で実行時間を縮められる場合があります。
数字の読み違い
累積時間の長い関数が見つかったら、その内訳も調べましょう。たとえば集計関数の時間が大きくても、大半がデータ読み込みなら、計算式の変更による短縮は限られます。
呼び出し回数も確認します。1回ごとは短くても、何百万回も動く処理は全体を遅くします。逆に、1度しか実行されない初期化処理は、常時動く処理ほど優先度が高くないこともあります。
cProfile自身の計測にも時間がかかります。表示された時間を本番の所要時間とみなさず、通常実行時も別に測ってください。
NumPyのようなネイティブ処理や外部ライブラリの内部を詳しく調べると、関数単位の結果では足りない場合があります。行単位の計測やサンプリング型プロファイラを加えれば、次に見る範囲を狭められます。
ハイパフォーマンス本
『ハイパフォーマンスPython 第2版』はMicha Gorelick氏とIan Ozsvald氏の著作を中山光樹氏が訳した日本語書です。2023年4月刊の452ページで、中級以上のPython開発者やデータサイエンティストが対象です。
cProfileに加えて、結果を可視化するSnakeVizや行単位で計測するline_profilerを扱います。さらにmemory_profilerでメモリ使用量を調べ、py-spyでサンプリング計測する方法も取り上げています。
CPUのボトルネックに加え、行列処理でのメモリ使用量やメモリ断片化も解説します。速度を上げた結果、メモリ使用量が膨らむ場面を考える材料になります。
データ構造やNumPy、Cython、Numbaを使う改善例があり、最適化中の単体テストも扱っています。参考価格は税込4,290円の公式希望小売価格です。実売価格は時期や販売店で変わるので、日本語で分析から改善まで学びたい人におすすめします。
英語で学ぶ高速化
『Python High Performance: Build high-performing, concurrent, and distributed applications』はGabriele Lanaro氏による英語の技術書です。2017年刊の第2版で270ページ。Pythonの基本知識があり、アプリケーションの性能を上げたい開発者を対象にしています。
pytest-benchmarkを使ったベンチマーク作成から、cProfile、line_profiler、memory_profilerでの分析へ進みます。測定とプロファイリングを通して最適化する流れを英語で学べます。
アルゴリズムやデータ構造、NumPy・Pandas、Cython、Numbaを使った改善方法も扱います。並行・並列・分散処理の内容まで含み、性能改善を広く学べる一冊です。
刊行は2017年で、本文は英語です。現在使うライブラリやPython環境の細部を読む際は、公式ドキュメントも確かめてください。ベンチマークから並列・分散処理まで英語で学びたい人におすすめします。

Python High Performance: Build high-performing, concurrent, and distributed applications
Packt Publishing
Amazonで見る総合書の性能章
Rick Hattem氏による英語の総合書『Mastering Python 2E』は、2022年5月刊、710ページです。中級から上級の開発者に向け、Python全般の学びと性能分析を含みます。
性能分析ではtimeit、cProfile、line_profilerによる計測に加え、プロファイル結果の分析方法を扱います。Python全般の知識と一緒に学べるので、cProfileに特化した本より範囲が広いです。
tracemallocとmemory_profilerを使ったメモリリークや使用量の分析、アルゴリズム、ジェネレータ、キャッシュ、JIT、Cへの変換も取り上げています。性能改善の方法を幅広く知りたい人におすすめです。
710ページの総合書なので、プロファイリングを短期間で学ぶには分量が多めです。英語でPythonを広く学び、性能以外の知識も補いたい人に適しています。
改良指針の一冊
Brett Slatkin氏の著作を鈴木駿氏が訳した日本語書です。2025年10月刊、572ページ。中上級のPythonプログラマ向けに、125項目の指針をまとめています。
性能に関する項目では、最適化前のプロファイリングとtimeitによるマイクロベンチマークを扱います。個別のプロファイラを深く解説する本ではなく、Pythonコード全体の改善方法を学べる構成です。
tracemallocでメモリ使用量やリークを把握する項目もあります。ネイティブライブラリとの連携、拡張モジュール、起動時間の短縮、ゼロコピー処理も取り上げており、実務改善の幅を広げられます。
参考価格は税込5,280円の公式希望小売価格です。実売価格は時期や販売店で変わります。Pythonコードを見直す基準を増やしたい人におすすめです。cProfileの詳しい分析を優先するなら、専用書を選ぶとよいでしょう。
結論
日本語でcProfileからメモリ分析、最適化後のテストまで一続きに学びたい人には、『ハイパフォーマンスPython 第2版』をおすすめします。プロファイリングの手法に加え、CPU・メモリの改善例まで扱うためです。
英語でも構わず、並行・分散処理まで知りたいなら『Python High Performance』が候補です。性能分析をPython全般と一緒に学ぶなら『Mastering Python 2E』、日々のコード改善指針を広げるなら『Effective Python 第3版』が合います。
どの本を読む場合も、手元の処理を測り、時間やメモリを多く使う場所を確かめるところから始めましょう。改善前後を同じ条件で比べ、テストで結果を支えることが実務の高速化につながります。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。




