ハイパフォーマンス Python

出版日
ページ数
360
ハイパフォーマンス Python
ISBN10
4873117402
ISBN13
978-4873117409
説明

Python プログラムのパフォーマンスを改善する方法を網羅的に解説した書籍です。

ボトルネック発見のためのプロファイリングの仕方から始まり、組み込み型の扱い、行列計算、 Cython 、 PyPy 、並行・並列処理、メモリの削減方法等々、パフォーマンス改善のための各種手法がもろもろ紹介されています。

どちらかというと、データサイエンスや AI 等で大量のデータを扱う必要があるその筋の専門家の人のための書籍です。

目次
訳者まえがき まえがき 1章 高性能な Python を理解する 1.1 コンピュータシステムの基礎 1.2 基本要素を統合する 1.3 それでも Python を使う理由 2章 ボトルネック発見のためのプロファイリング 2.1 効率のよいプロファイリング 2.2 ジュリア集合について 2.3 ジュリア集合全体を計算する 2.4 時間計測の簡単な方法 ―― print とデコレータ 2.5 Unix の time コマンドを用いて簡単に時間測定する 2.6 cPro.le モジュールを使う 2.7 RunSnakeRun を使って cPro.le 出力を視覚化する 2.8 line_pro.ler を使って行単位で計測する 2.9 memory_pro.ler を使ってメモリ使用を診断する 2.10 heapy を使ってヒープ上のオブジェクトを調査する 2.11 dowser を使って実体化された変数のリアルタイムグラフを描く 2.12 dis モジュールを使って C Python のバイトコードを調べる 2.13 最適化中に単体テストをして正確さを維持する 2.14 成功するプロファイリング戦略 2.15 まとめ 3章 リストとタプル 3.1 より効率的な探索 3.2 リストとタプルの違い 3.3 まとめ 4章 辞書と集合 4.1 辞書と集合の動作の仕組み 4.2 辞書と名前空間 4.3 まとめ 5章 イテレータとジェネレータ 5.1 ジェネレータと無限数列 5.2 ジェネレータの遅延評価 5.3 まとめ 6章 行列とベクトルの計算 6.1 問題の説明 6.2 Python のリストで十分でないか? 6.3 メモリ断片化 6.4 拡散問題に numpy を適用する 6.5 numexpr: インプレース演算を簡潔に高速化する 6.6 訓話: 最適化を検証しよう( scipy ) 6.7 まとめ 7章 C にコンパイルする 7.1 どんな高速化が可能か? 7.2 JIT 対 AOT コンパイラ 7.3 データ型の情報が高速化に役立つわけ 7.4 C コンパイラを使う 7.5 ジュリア集合の例を振り返る 7.6 Cython 7.7 Shed Skin 7.8 Cython と numpy 7.9 Numba 7.10 Pythran 7.11 PyPy 7.12 各技術をいつ使うのか? 7.13 外部関数インタフェース 7.14 まとめ 8章 並行処理 8.1 非同期プログラミング入門 8.2 逐次処理によるクローラー 8.3 gevent 8.4 tornado 8.5 AsyncIO 8.6 データベースの例 8.7 まとめ 8.8 サーバー 9章 multiprocessing モジュール 9.1 multiprocessing モジュールの概要 9.2 モンテカルロ法を使ってπを推定する 9.3 プロセスとスレッドを用いてπを推定する 9.4 素数を求める 9.5 プロセス間通信を用いて素数を判定する 9.6 multiprocessing を用いて numpy のデータを共有する 9.7 ファイルと変数のアクセスを同期させる 9.8 まとめ 10章 クラスタとジョブキュー 10.1 クラスタの利点 10.2 クラスタの欠点 10.3 一般的なクラスタ設計 10.4 クラスタ化の着手法 10.5 クラスタを用いるときの苦痛を避ける方法 10.6 3種のクラスタ 10.7 他のクラスタ化ツール 10.8 まとめ 11章 RAM 使用量を削減する 11.1 基本データ型のオブジェクトはコストが高い 11.2 コレクションに使われる RAM を理解する 11.3 バイトとユニコードの違い 11.4 RAM に効率よく大量のテキストを記憶する 11.5 RAM 使用量を削減するコツ 11.6 確率的データ構造 12章 現場に学ぶ 12.1 Adaptive Lab のソーシャルメディア分析( SoMA ) 12.2 RadimRehurek.com における深層学習の高速化 12.3 Lyst.com における大規模な実用機械学習 12.4 Smesh 社における大規模ソーシャルメディア分析 12.5 PyPy を用いた Web とデータ処理システムの成功例 12.6 Lanyrd.com におけるタスクキュー 付録A サンプルプログラムについて A.1 ソースコードの入手 A.2 サンプルプログラムの実行 索引
紹介( powered by openBD

Pythonで大規模なデータ処理をするときに不可欠なポイントを網羅!
Pythonの高速化技法について一歩踏み込んだプロユースの解説書。ボトルネックの測定方法から、最適なデータ構造の使い分け、CythonやPyPyなどのコンパイラの比較、numpyなどのパッケージの使い方、マルチコアCPUの活用法、メモリ効率を劇的に改善するトライ構造や近似計算まで、シンプルな実例プログラムを用いながらわかりやすく説明します。高性能なプログラムの書き方だけでなく、高性能なシステムの作り方を総合的に学ぶことができるPythonエキスパート必携の一冊です。