私はPythonの "マルチプロセッシング"、特に "プール"の内容について読んできました。私はスレッドに精通していますが、ここで使用されているアプローチではありません。プロセスプール( "pool.map(myMethod、humungousDictionary)")に非常に大きなコレクション(ある種の辞書など)を渡すと、辞書をメモリに入れて各プロセスに渡すよりも、 1つの辞書しか存在しないのですか?私はメモリ使用が心配です。前もって感謝します。Pythonでのmultiprocessing.poolのメモリ使用に関する混乱
0
A
答えて
1
短い答えは:いいえです。プロセスは独自の独立したメモリ空間で動作し、効果的にデータを複製します。
辞書が読み取り専用、および修正が行われない場合は、ここではあなたが考えることができ、いくつかのオプションがあります
- は、データベースにデータを保存します。各作業者はデータを読み取り、独立して作業します
os.fork
を使用して複数のワーカーを生成する親プロセスを持つ単一のプロセスがあります。したがって、すべてのスレッドは同じコンテキストを共有します。- 共有メモリを使用します。 Unixシステムは、プロセス間通信用に共有メモリを提供します。レースの可能性がある場合は、セマフォも必要になります。
考えられる解決策についてのより深い見識については、hereを参照することも考えられます。
+0
ありがとうColdspeed。共有メモリをWindows(およびMacOSX)で使用できますか? – LKeene
+0
@LKeeneこちらをご覧ください:https://docs.python.org/2/library/mmap.html ...うまくいけばクロスプラットフォームです。 –
関連する問題
- 1. メモリ使用量は、ここでは、Pythonのmultiprocessing.pool
- 2. id2word_token2Gensimでの使用混乱
- 3. createInsecureRfcommSocket()に関する混乱
- 4. - バージョンに関する混乱
- 5. `Element.prototype.scrollTo`に関する混乱
- 6. パケットに関する混乱
- 7. PythonのLEN()混乱
- 8. Python値の混乱
- 9. C++ - デフォルト引数の使用に関する混乱
- 10. 混乱は、Python
- 11. Python再帰関数に関する混乱
- 12. モバイルアプリケーションの開発に関する混乱
- 13. Spring MVCのApplicationContextに関する混乱
- 14. カルーセル/スライダーのセレクタに関する混乱
- 15. ASP.NETのWebコントロールスコープに関する混乱
- 16. ファンクタに関する混乱のビット?
- 17. C#のプロパティに関する混乱
- 18. JavaScriptのコンテキストに関する混乱
- 19. web.xmlのcontextConfigLocationに関連する混乱
- 20. IFに関するVBAの混乱
- 21. バックグラウンドタイマーの作成に関する混乱
- 22. Mavenプロファイルの混乱。内部レポへのユーザーベースの認証に関する混乱
- 23. Pythonのマジックメソッドの混乱
- 24. Pythonのデフォルトのparams混乱
- 25. Pythonのリストの混乱
- 26. Playフレームワークのビュークラスで@を使用することに関する混乱
- 27. Python関数の返信文が混乱し複雑である
- 28. CoreDataの関係の混乱
- 29. MIDIメッセージの混乱[Python]
- 30. VB6でのエラー処理とOn Error GoToの使用に関する混乱
マップメソッドにディクショナリを渡す理由はわかりませんが、ディクショナリはキーの繰り返し可能性にキャストされ、一部のキーは各サブプロセスに渡されます。 – newtover
これは人為的な例でした。私は、複数のプロセスが大きなデータセットを処理しようとしている場合を説明したかっただけです。これは実際には数値アプリケーションのためのものです。そのため、この例は非常に大きなnumPy配列などで与えられている可能性があります。私はちょうどボンネットの下でそれにアクセスする必要がある各プロセスのためにデータセットが複製されることに懸念しています。 – LKeene