このサイトについて

大人 meets プログラミング,Pythonで人生をハックしよう。
10月13日(土),プログラミングとAIのリテラシーをサックリと学ぶ講座を開発します。 (主催:角川アスキー総合研究所)

Pythonによる並行処理,マルチプロセッシング用ライブラリ/ソリューションのリスト

Pythonによる並行処理,マルチプロセッシング用ライブラリ/ソリューションのリスト

python.orgのwikiにある,Parallel Processing and Multiprocessing in Pythonの翻訳です。たくさんありますね〜。抜粋している部分があるので,詳しく知りたい人は原文を読んだりリンクを辿ることをお勧めします:-)。

Pythonには,複数のCPUやマルチコアCPU,共有メモリ環境,クラスタやグリッド環境を活用するためのライブラリが多く存在します。このページでは,個々のライブラリやソリューションの情報を調べてまとめています。

  

対称型マルチプロセッシング  

  • delegate - forkベース。pipeを使ってpickeしたデータを送りプロセスを生成 

  • forkmap - forkベース。組み込み関数map()のような仕組みを使う(Unix, Mac, Cygwinで動作)  

  • ppmap - forkmapの亜種で,ppを使ってサブプロセスを管理 (Unix, Mac, Cygwinで動作)  

  • POSH Python Object Sharingの略。共有メモリ上でPythonのオブジェクトを共有できる。共有コンテナオブジェクト上でオブジェクトを共有することで,並行プロセスをサポート。(POSIX/UNIX/Linux のみ)

  • pp (Parallel Python) - プロセスベース,Jobを使ってクラスタをサポート (Windows, Linux, Unix, Mac)

  • pprocess (previously parallel/pprocess) - forkベース。非同期の通信を使ってpickleデータを送ってプロセス間通信を行う (英文のチュートリアル) (POSIX/UNIX/Linuxのみ, Cygwinでも動くかも)

  • processing - プロセスベース。Unixではforkを,Windowsではサブプロセスを使う。標準のthreadingに似たAPIを持っていて,queuやセマフォを使う。(Unix と Windows). Python 2.6/3.0 には multiprocessingとして同梱

  • remoteD - forkベース。Pythonkの辞書オブジェクトを使って通信を行う。

クラスタコンピューティング

SMP(対 象型マルチプロセッシング)や,特にスレッドベースの並行処理と比較して,クラスタやグリッドでは共有メモリのような仕組みがないので高いパフォーマンス を発揮できる。一方,クラスタを活用したプログラミング手法は一般のエンジニアにとってなじみが薄いという側面もある。ここでは,分散コンピューティング ソリューション含めて,クラスタコンピューティング用のライブラリを紹介する。

  • batchlib - 分散計算モデル用ライブラリ(開発終了)
  • Celery - 分散タスクキューを提供

  • disco - map-reduceの実装。コアはErlangで書かれ,ジョブをPythonで書く。GoogleのmapreduceとApacheプロジェクトのhadoopを参考に作られた

  • jug - タスクベースの並行処理フレームワーク

  • mpi4py - MPIベースのソリューション

  • NetWorkSpaces Lindaspaces のPython版らしい

  • PaPy - Parallel(multiprocessingを活用)とdistributed(RPyCを活用)したワークフローエンジン

  • papyros - 軽量なマスタスレーブ型の並行プロセッシングライブラリ。

  • pp (Parallel Python) - "SMPやクラスタ上で複数のPythonコードを実行するためのライブラリ"

  • PyLinda - 分散処理用ライブラリ

  • pyMPI - MPIベース

  • pypar - Numeric Python と MPIベース

  • pypvm - PVMベース

  • pynpvm - PVMベース。NumPy

  • Pyro PYthon Remote Objectsの略。ネットワーク上で動く分散オブジェクトシステム

  • rthread - SSHを使って関数を分散実行できる

  • ScientificPython 並行コンピューティング用の3つのパッケージを含む:

    • Scientific.DistributedComputing.MasterSlave は,マスタ・スレーブモデルを実装。利用が容易で,スレーブの増減に対応しやすいのが特徴。"Pyro"を使用

    • Scientific.BSP オブジェクト指向の "Bulk Synchronous Parallel (BSP)" モデル実装

    • Scientific.MPI MPIを活用しているCとPythonのコードを使うためのインターフェース

  • seppo - Pyroベース。並行稼働するmap()関数を提供

  • "Star-P for Python インタラクティブな並行コンピューティングプラットフォーム

  • superpy クラスタ間,複数プロセス間でPythonのプログラムを動作させることができる。GUIが付属。Windowsで稼働

クラウドコンピューティング

 

クラウドコンピューティングはクラスタコンピューティングに似ているが,クラウドプロバイダが所有する計算資源上で処理が行われる点が異なる。ハードや環境を構築,購入する必要がないので,多くの並行プロセスを安く手軽に実行できる。

 

グリッドコンピューティング

 

  • Ganga - CERNのATLAS と LHCbanで開発されているGrid用のインターフェース

  • PEG - Grid 用のPython拡張

  • pyGlobusPython Core を参照

 

関連プロジェクト

 

2010-12-08 01:01