2017-04-11 6 views
-1

私はマルチスレッドPython(CPython)を学んでいます。私はGILと、どのようにスレッド化を単一のコアに制限するのかを知っています(ほとんどの状況で)。標準ライブラリのどの部分をマルチコアで実行できますか?

私は入出力機能をマルチコアで実行できることを知っていますが、標準ライブラリのどの部分を複数のコアで実行できるかのリストを見つけることができませんでした。私は、urllibはマルチコアで動くことができると信じており、別のコア上のスレッドでダウンロードできるようにしています(ただし、ドキュメントの確認はできません)。

私が見つけようとしているのは、標準ライブラリのどの部分がマルチコアを実行するのかです。これはドキュメントでは指定されていないようです。ドキュメントから撮影

、圧縮やハッシュなど、計算集約型のタスクを実行するときGILを解放するようにしかし、標準またはサードパーティ製の一部の拡張モジュールは、設計されています。また、GILはI/O実行時に常に解放されます。

+1

スパムプロセス以外のマルチコアを実行することはできません。スレッドについて話していると、すべてがマルチスレッドで実行できますが、スピードパフォーマンスは向上しませんが、I/O操作はありません。 – Netwave

+0

ありがとう@DanielSanchez。ですから、マルチスレッドPythonは、グローバルインタプリタのロックが解除されたI/Oを実行する場合を除いて、多くのことを得ることはできません。特定の重いタスクを実行する場合には、このことがわかります。私の編集を参照してください。私が知りませんが、Python標準ライブラリのどの部分がロックを解放し、マルチコアスレッドを可能にするのでしょうか。 – geminiCoder

答えて

0

multiprocessingパッケージでは、別々のプロセスが異なるコアで動作する本当の並列プログラムを作成できます。各サブプロセスが使用できるライブラリ(標準または非標準)に制限はありません。

マルチプロセスプログラミングの難しい部分は、プロセスが情報を交換する必要がある場合です(例えば、値を渡したり、お互いが特定のタスクを完了するのを待つなど)。 multiprocessingパッケージにはいくつかのツールが含まれています。

関連する問題