2011-06-30 14 views
5

コルーチンは、並行プログラミングを容易にするための大きなパラダイムです。そして、ほとんどの場合、並行タスクは容易に並列化できます。 Go言語では、並列タスクを実行するためにgoroutinesを使用するのは簡単です。 Pythonで同じことをする方法はありますか?コルーチンを使ってプロセスを作成し、それらを同期させるには?Pythonのコルーチンによる並列プログラミング

答えて

3

はい、Pythonはライブラリやコジェネレータのコルーチンをサポートしています。例えば、Greenletライブラリを参照してください。また、マイクロスレッドやチャネルなどのいくつかの並行プログラミング機能を内蔵しているStackless Pythonという派生語もあります。

デフォルトのCPythonでは、グローバルインタープリタロックは1つのスレッドを一度に実行することを許可しますが、これは問題の可能性があります。

2

標準のPythonインタプリタを使用する場合は、greenletライブラリを使用します。

GILについては、コルーチンでは問題にはなりません。あなたは、1つのカーネルスレッド内で実行される複数の軽量ユーザー空間「スレッド」として、Greenletコルーチンモデルを考えることができます。だからGILとOSの観点からは、それはまだシングルスレッドです。

関連する問題