忙しいあなたの代わりに、史上最強の「良い本・良い暮らし」のご提案

1冊の本に出会うことで、人生が大きく変わることがあります。良い品物に出会ったことで幸せになれることもあります。とはいっても、多様な商品があふれる中で、より価値の高いものを選び出すのは大変です。そこでこのブログでは、忙しいあなたの代わりに、史上最強の「良い本・良いくらし」の提案をさせていただきます。

IT関係 / 学問

スポンサードリンク
 

「Python」は、習得しやすいプログラミング言語です。 

Pythonはライブラリが豊富で、さまざまな応用ができ、よく使われる言語の1つです。

さいきん盛り上がっている「人工知能」や「ディープラーニング(深層学習)」「機械学習」では、

Pythonを使って書かれたライブラリやフレームワークが世界中で使われています。



Pythonは書きやすく理解しやすい、かつ、数値計算を行うためのライブラリが整備されているため、

こういったデータサイエンスや金融工学、人工知能といった分野でも重宝されています。



このような分野でPythonの需要は増えていますが、大規模なデータを、

現実的な時間スケールでサクッと処理しなければなりません。

とくにディープラーニングは、機械学習の1種であるニューラルネットワークを何層にも重ねていて、

処理する計算量も莫大になります。



このように大規模な計算をするには、「Pythonの高速化」が重要になります。

単純なPython高速化には、ボトルネックを特定したあとで、
  • リストとタプルの使い分け
  • 辞書と集合の使い分け
  • イテレータとジェネレータの効率よい使い方
を検討する、シンプルな方法もあります。


しかしこれだけでは、(大規模な計算で)満足いく結果をえることは難しいはずです。


一般的に、高速化にはいろいろな方法があって、

それぞれにメリット・デメリットがあり、あなたが使うコンピュータシステムに依存しています。

たとえば
  • マルチコア
  • クラスタ
  • GPU
など利用システムによって、高速化の手法が変わってきます。


Pythonを最速にするには、
  • Cython
  • Numpy
  • PyPy
などを使う方法もあり、

これらは他のライブラリやシステムの基盤として広く利用されていて、陳腐化されにくい技術です。



これらの技術を、あなたの環境で、最適に活用すること、がポイントになります。


今回紹介する本では、おもにCPUの計算スピードについての高速化(CPUバウンド問題)をあつかい、

データ転送やメモリの入出力(メモリバウンド問題)にも触れています。

数値計算をよく使う方、科学者やエンジニア、金融アナリストの方などはとくに関係が深いと思います。

ほかにも、データの移動や、簡単に性能を引き出せるPyPyなどは、

Web開発者の方にも役に立つ内容です。



この本で学べる主なものを挙げてみました。
  • コンピュータの基礎知識
  • リストとタプル
  • 辞書と集合
  • イテレータ
  • 純粋にPythonとモジュールを効率よく使う方法
  • numpyを使った行列計算
  • コンパイラとJIT計算
  • 並行処理
  • multiprocessing
  • クラスタコンピューティング
  • RAMの節約
  • 先人の格闘の物語からの教訓
となっています。


Pythonの基礎を身につけた方は、中級から上級者へのステップアップになる本です。

ハイパフォーマンスPython
Micha Gorelick
オライリージャパン
2015-11-20


 本書の構成は以下の通りです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

1章 高性能なPythonを理解する
コンピュータシステムの基礎
基本要素を統合する
それでもPythonを使う理由、など


2章 ボトルネック発見のためのプロファイリング
効率のよいプロファイリング
ジュリア集合
時間計測の簡単な方法
cPriofileモジュール
line_profiler
memory_profiler
heapy
dower
dis
最適化中に単体テストをして正確さを維持する
成功するプロファイリング戦略、など


3章 リストとタプル
より効率的な探索
リストとタプルの違い、など


4章 辞書と集合
辞書と集合の動作の仕組み
辞書と名前空間、など


5章 イテレータとジェネレータ
ジェネレータと無限数列
ジェネレータと遅延評価、など


6章 行列とベクトルの計算
Pythonのリストで十分でないか?
メモリの断片化
拡散問題にnumpyを適用する
numexpr
最適化を検証しよう、など


7章 Cにコンパイルする
どんな高速化が可能か?
JIT対AOTコンパイラ
Cコンパイラを使う
Cython
Shed Skin
Cythonとnumpy
Numba
Pythran
PyPy
各技術をいつ使うのか?
外部関数インターフェース、など


8章 平行処理
非同期プログラミング入門
逐次処理によるクローラー
gevemt
tornado
AsyncIO
データベースの例
サーバー、など


9章 multiprocessingモジュール
モンテカルロ法を使ってπを推定する
プロセスとスレッドを用いてπを推定する
素数を求める
プロセス間通信を用いて素数を判定する
multiprocessingを用いてnumpyのデータを共有する
ファイルと変数のアクセスを同期させる、など


10章 クラスタとジョブキー
クラスタの利点・欠点
一般的なクラスタの設計
クラスタ化の着手法
クラスタを用いるときの苦痛を避ける方法
3種のクラスタ
他のクラスタ化ツール、など


11章 RAM使用量を削減する
基本データ型のオブジェクトはコストが高い
コレクションに使われるRAMを節約する
バイトとユニコードの違い
RAM使用量を削減するコツ
確率的データ構造、など


12章 現場に学ぶ
AdaptiveLabのソーシャルメディア分析(SoMA)
RadimRehurek.comにおける深層学習の高速化
Lyst.comにおける大規模な実用機械学習
Smesh社における大規模ソーシャルメディア分析
PyPyを用いたWebとデータ処理システムの成功例
Lanyrd.comにおけるタスクキュー


付録:サンプルプログラムについて 

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

この本では、リストやタプルの使い分けといったテクニックにとどまらず、
  • マルチコア・マルチCPUの活用法
  • コンパイラ・ライブラリ・近似計算といった、根本的高速化、
  • 省メモリ化する手法
などをたっぷり紹介しています。


また、たとえば “さまざまな外部システムと結合しながら必要に応じて段階的に最適化していく”といったケーススタディを通じて、具体的に学ぶこともできます。


ビッグデータ・機械学習・人工知能などの背後には、

Pythonによる高度な行列計算やシステムの連携の進歩が貢献していますが、

そういった方面に進みたい方にもオススメの本となっています。

ハイパフォーマンスPython
Micha Gorelick
オライリージャパン
2015-11-20

 


こちらもございます

Pythonを学習し、未経験からバイトや転職に結びつけたいあなたにおすすめの入門書はこちらです



Python でできることってなに?チャットボットやテキストマイニング、人工知能やスクレイピングなどPythonの使い方をまとめました

 

Python のフレームワーク・ライブラリ・ツール・開発環境などを活用し、Pythonで業務効率化をしたいあなたはこちらをどうぞ

 

 

『「Python」に関する記事を一覧はこちらです

 
 

Pythonに関する本は、こちらにもございます




こちらの記事もございます






スポンサードリンク
 
このエントリーをはてなブックマークに追加 mixiチェック

コメント

コメントフォーム
評価する
  • 1
  • 2
  • 3
  • 4
  • 5
  • リセット
  • 1
  • 2
  • 3
  • 4
  • 5
  • リセット

↑このページのトップヘ