Queueにオブジェクトを配置すると、オブジェクトのディープコピーを作成してキューに入れる必要がありますか?Pythonマルチプロセッシングキューはオブジェクトの置かれた場所に安全ですか?
2
A
答えて
1
オブジェクトが1つのスレッドでのみ処理されるようにすることができれば、問題はありません。しかし、できない場合は、ディープコピーを使用することをお勧めします。
キューオブジェクトは、オブジェクトを入れると自動的にこれを行いません。
参照参考文献
- Multithreading, Python and passed arguments
- Python in Practice: Create Better Programs Using Concurrency... p.154
オブジェクトがへのそれは通常より有用
(Multiprocessing Basics)漬けすることができるようにする必要があることに留意してください引数を指定してプロセスを生成して、何をすべきかを伝えることができます。スレッド処理とは異なり、引数をマルチプロセッシングプロセスに渡すには、引数はpickleを使用してシリアル化できる必要があります。この例では各作業者に番号を渡して出力が少し面白くなります。
2
put
キュー内での操作では、オブジェクトのコピー(またはディープコピー)は作成されません。ディープコピーを作成する場所、または実装したい動作に完全に依存しません。
オブジェクトをキューに入れてオブジェクトを外部に変更し、その変更をキュー内のオブジェクトに反映させたい場合は、ディープコピーを作成しないでください。
ディープコピーを作成して、外部で行った変更がキュー内のオブジェクトに反映されないようにします。
また、SO:Python multiprocessing.Queue modifies objectsに関する関連記事もあります。受け入れられた回答をチェックすると、キューに不変オブジェクトを使用することが示唆されます(、深くコピーしていない場合は)。
関連する問題
- 1. は安全な場所に
- 2. 保護者の保管場所に安全なファイルを置くにはどうすればいいですか?
- 3. app.configファイルはパスワードを保存するための安全な場所ですか?
- 4. Pythonでのマルチプロセッシングキュー
- 5. 時間の同時安全性。場所
- 6. Pythonマルチプロセッシングのプールスレッドは安全ですか?
- 7. このPythonコードは安全ですか?
- 8. オブジェクトの場所 - Python
- 9. Pythonリロードは安全ですか?
- 10. ApplicationDataは、onPauseでデータを保存する場所として安全ですか?
- 11. プロデューサが例外で終了した場合のPythonマルチプロセッシングキューのデッドロック
- 12. これはPythonタイマーの使用は安全ですか?
- 13. CAtlListオブジェクトのPOSITIONオブジェクトをキャッシュするのは安全ですか?
- 14. Pythonマルチプロセッシングキューを使ったデッドロック
- 15. pthread_cond_waitは完全に安全ですか?
- 16. Pythonマルチプロセッシングキューがstucked
- 17. Parse PFUser.current()オブジェクトはどれくらい安全ですか?
- 18. ブーストメッセージキューのスレッドは安全でプロセスは安全ですか?
- 19. .lower()をある場所に置くか別の場所に置くかの違いはありますか?
- 20. バーチャルホストでファイルを保存する安全な場所Cpanel
- 21. htdocsにデータベースファイルを置くことは安全ですか?
- 22. 990pxはウェブページの完全な安全な幅ですか、または980px以下で安全ですか?
- 23. アップロードした画像をパブリックフォルダに配置するのは安全ですか?
- 24. バックグラウンドスレッドでUIオブジェクトをインスタンス化するのは安全ですか?
- 25. "User.Identity.Name"は安全ですか?
- 26. PhoneGapは安全ですか?
- 27. req.refererは安全ですか?
- 28. Context.MODE_PRIVATEは安全ですか?
- 29. フォームは安全ですか?
- 30. SecureStringは安全ですか?
私はオブジェクトが受信プロセスに転送される前にピクルされていると考えています(つまり、同じコピーで作業していません)。 – thebjorn
@マジドアンサーで回答を受け入れ、質問を閉じてください。 – ppasler