私は、Pythonのグローバルインタープリタロックが実際にどのように動作するのか不思議です。私がC++アプリケーションを起動した場合、Pythonスクリプトの4つのインスタンスが別々のコア上で並列に実行されるか、GILは起動された単一のプロセスだけでなく、それを生成したプロセスに関係なくすべてのPythonプロセスを制御します?別々のpythonプロセスを実行するとGILを回避できますか?
9
A
答えて
20
GILは、1つのプロセス内のスレッドにのみ影響します。 multiprocessing
モジュールは実際にはthreading
の代わりになっており、Pythonプログラムで複数のコアを使用できるようにしています& c。あなたのシナリオでは複数のコアも簡単に使用できます。
1
Alex Martelliは、複数のプロセスを実行することでGILを避けることができると指摘しています.GILはPythonの一般的な実装ではなく(CPython)この制限なしにPythonを実装してください。 Stackless Pythonが気になります。
+0
これはスタックレスに関するよくある誤解です。スタックレスは複数のコアを利用するのに役立ちません。 http://www.stackless.com/pipermail/stackless/2007-August/001963.htmlを参照してください。 –
関連する問題
- 1. 別々のプロセスでWebアプリケーションを実行する
- 2. make Office 2013ウィンドウを別々のプロセスで実行する方法
- 3. フォーク子供3人ずつ別々のプロセスを実行する
- 4. 別のプロセス内のメモリからプロセスを実行しますか?
- 5. 実行を回避する.eachループ
- 6. Python GILをCモジュールでバイパスすることはできますか?
- 7. ScikitsはPython GILをリリースしますか?
- 8. 別のnode.jsプロセスとして関数を実行しますか?
- 9. 別のプロセス(2.exe)で実行されているプロセス(1.exe)をどのようにデバッグできますか?
- 10. 各要素の機能を別々に実行しますか?
- 11. コンソールアプリケーションを作成することなく、C#コードを別のプロセスで実行できますか?
- 12. 実行中のコンソールのコードページを別のプロセスから変更することはできますか?
- 13. ルールを直接実行する(ルール+ワークフローを回避する)
- 14. cygwinの別の環境でプロセスを実行します
- 15. PHP:メインプロセスとは別のプロセスを実行する方法
- 16. Python:* nixで実行中のプロセスのSTDIN/OUTと対話する
- 17. Windowsサービスとタイマー - 別々のプロセス?
- 18. FacebookアプリでHerokuでプロセスを実行することはできますか?
- 19. Djangoとは別のコンテナでCeleryを実行できますか?
- 20. ベストプラクティスは、別々の.jsファイルでjavascript関数の名前の競合を回避しますか?
- 21. 1つのスクリプトで複数回呼び出された場合、/ usr/bin/perlは別々のプロセスとして実行されますか?
- 22. Angular 2クイックスタートを実行しているときにLinuxでNPM lite-serverを回避または修正する
- 23. タスクキューの実行遅延を回避する方法
- 24. 別のスレッドでプロセスを実行するとSystem.IOが発生する__ Error.WinIOError
- 25. 別のプロセスでJavaアプリケーションを実行する
- 26. Qtで別のプロセスやスレッドを実行する
- 27. 実行時に別のレイアウトを1回使用しますか?
- 28. GDBで埋め込みプロセスを実行できますか?
- 29. 同じpythonプロセスで複数のサイトを実行する
- 30. あるプロセスが別のプロセスのメモリを上書きできますか?
今日は私が大変助けてくれると確信しています。ありがとう! – whatWhat
あなたは大歓迎です! –
Pythonアプリケーションの "Plain Old Unix Pipeline"は、多くの場合、複数のスレッドより優れた設計です。 プロセスのパイプラインは、すべてのGILの問題を回避します。また、使用しているライブラリの潜在的なスレッド安全性の問題を回避します。シェルを使用して簡単に作成できます。 OSはsys.stdinから読み込み、sys.stdoutに書き込むだけで同期を処理します。 –