GILが存在するため、Pythonで真の並列性を持つことは可能ですか?私が知る限り、各スレッドは実行前にGILを取得していますが、他のスレッドはGILが解放されるまで待機しています。なぜそれがそのようなボトルネックであるならGILを持っているのですか?Pythonの真の並列性
答えて
Pythonでは、言語は必ずしもGILを強制するとは限りません。それはGILを持っているかもしれないし、持っていないかもしれない言語の異なった実装です。
CPython(事実上の実装)にはGILがあります。したがって、あなたが本当に並列スレッドを使用している間、それを持つことはできません。ただし、マルチプロセッシングを使用して並列性を得ることができます。 PyPyは、言語のもう一つの実装にもGILを持っています。
GILを持たないPython言語(たとえば、Jython & IronPython)の実装があり、スレッドを使用して並列処理を実行できます。
CythonにはGILがありますが、with
ステートメントを使用してリリースすることができます。言及したプロジェクトの
リンク:このトピックの
その他のリソース:
プログラミング・スタック交換についての質問:https://softwareengineering.stackexchange.com/questions/186889/why-was-python-written-with-the-gil(@Rogalskiのおかげで)
Pythonのウィキ:https://wiki.python.org/moin/GlobalInterpreterLock
デビッド・ビーズリーの話 - ジェフKnuppからhttps://www.youtube.com/watch?v=Obt-vMVdM8s
記事:https://jeffknupp.com/blog/2013/06/30/pythons-hardest-problem-revisited/
なぜcpythonがGILを使うことにしたのですか? GILから何が得られるのか –
http://programmers.stackexchange.com/questions/186889/why-was-python-written-with-the-gil –
@FaizHalde:ウェブ上のトピックに関する何百もの記事があります –
私はここ読んで開始することをお勧めしたい、PythonでGILを学びたい:
https://wiki.python.org/moin/GlobalInterpreterLock
セクションは、PythonはまだGILを持っている理由を説明するためにGILを排除参照してください。
BTW: "python gil"を検索し、最初の結果... SOに投稿するよりも速いかもしれません...;) – Felix
- 1. Pythonのスレッドモジュールは真の並列性を提供しますか?
- 2. Javaの並列性
- 3. Tensorflowモデルの並列性エラー
- 4. Python-C APIの並行性の問題
- 5. Pythonでの並列SSH
- 6. 並列Pythonプログラム(mpi4py)のデバッグ
- 7. Python Joblibのダブル並列ループ
- 8. Python - ループの並列化
- 9. Pythonのスパース行列の並列アセンブリ
- 10. 各アイテムの属性の並列追加
- 11. プログラムの固有の並列性
- 12. 並列処理Python
- 13. 並行性と並行性の低下
- 14. 並列バスCPUでのアトミック性
- 15. ファイバーとの単純な並列性?
- 16. 関数内の並列性は?
- 17. SQL Server実行計画の並列性
- 18. スカラ並列コレクションの並行性を制御する方法
- 19. 並列処理のためのPythonマルチプロセッシング
- 20. Pythonのコルーチンの並列非同期IO
- 21. whileループでのPythonの並列計算
- 22. PythonでのDAGの並列リアルタイムスケジューリング
- 23. Python並列割り当て
- 24. 「偽 - 真の」Pythonの
- 25. 分散型Juliaの弾性並列性とフォールトトレランス
- 26. 並列処理AWS S3データのPython
- 27. Pythonは:並列実行pysphereは、ループの
- 28. Pythonのコルーチンによる並列プログラミング
- 29. Pythonの列を並べて印刷
- 30. Python:アルファベット配列の並べ替え
[David BeazleyのGIL research](http://www.dabeaz.com/GIL/)を参照してください。 – mshildt