私は、Pythonのマルチプロセッシングモジュール2.6を使用して2つのワーカープロセスを作成します。 各作業者では、作業員を監視するために標準ログモジュール(ログローテーションと作業者ごとのファイル) を使用します。私は数時間後にも、 イベントがログに書き込まれなくなったことに気づいた。プロセスはクラッシュするようには見えず、私のキューを経由してコマンドに と応答します。 lsofを使用すると、ログファイルが開いていないことがわかります。 ガベージコレクタによってログオブジェクトが殺されるのではないかと疑いますが、それを保護するためにマークする方法がある場合は ですか?マルチプロセスプロセスのガベージコレクタからログオブジェクトを保護するにはどうすればよいですか?
答えて
@ THC4kに同意します。これはGCの問題のようには見えません。私はなぜあなたに私の理由を教えてくれるでしょう、もし私が間違っていたら誰かが私に投票してくれると確信しています(もしそうなら、私のエラーを指摘するコメントを残してください)。
CPythonを使用している場合、主に参照カウントが使用され、参照カウントがゼロになるとオブジェクトは即座に破棄されます(循環参照の大文字と小文字を区別するために補助ガベージコレクションも提供されます)。あなたのログオブジェクトへの参照を保持すると、破壊されません。
JythonまたはIronPythonを使用している場合は、基になるVMがガベージコレクションを行います。再度、参照を保持し、GCはそれに触れてはいけません。
いずれにせよ、あなたは、生き続ける必要があるオブジェクトへの参照を保持していないか、他のエラーがあるようです。
CPythonにはマークとスイープガベージコレクタがあります。パフォーマンスの改善として参照カウントを使用するため、非循環データ構造をマークしてスイープする必要はありません。いずれにしても、何かを収集したくない場合には解決策は同じです。 – stonemetal
@stonemetal:ありがとう。私は私の答えを編集しました。 –
私はまだ問題を追跡していませんが、lsof(htop)経由でファイルハンドルが失われているという報告が間違っているように見えます。私はhtop/lsofの統合にバグがあると思います:) – Marinus
http://docs.python.org/reference/datamodel.html#object.__del__
デル()メソッドは、オブジェクトの破壊に呼び出されたこの文書によると、この時点で収集されてからそれを防ぐために、オブジェクトへの参照を作成することができます。私はこれを行う方法がわからない、うまくいけば、これはあなたに考えのためのいくつかの食糧を与える。
fork()の直後にgc.collect()
を実行すると、ログが閉じられるかどうかを確認できます。しかし、おそらくガベージコレクションは数時間後に有効になるわけではありません。
- 1. iPhoneでブロブデータを保護するにはどうすればよいですか?
- 2. AIRでコンテンツを保護するにはどうすればよいですか?
- 3. チャートコードを保護するにはどうすればよいですか?
- 4. Google Maps APIを保護するにはどうすればよいですか?
- 5. PHPフォームを保護するにはどうすればよいですか?
- 6. アプリケーションコードを保護するにはどうすればよいですか?
- 7. ユーザーのページでJavaScriptからPHP Cookieを保護するにはどうすればよいですか?
- 8. iosのローカルデータベースは保護されていますか?どのようにそれらを保護する?
- 9. geocoder-php/GeocoderLaravelから返された保護オブジェクトにアクセスするにはどうすればよいですか?
- 10. HTTrackや他のソフトウェアのリッピングからサイトを保護するにはどうすればよいですか?
- 11. ビデオを盗まれないように保護するにはどうすればよいですか?
- 12. AWS APIゲートウェイのURLを不正アクセスから保護するにはどうすればよいですか?
- 13. RESTサービスの「パブリック」部分をスパムから保護するにはどうすればよいですか?
- 14. ダイナミックな「クレデンシャルの作成」ステートメントをインジェクションから保護するにはどうすればよいですか?
- 15. 不正使用からGPLベースのアプリケーションを保護するにはどうすればよいですか?
- 16. 自動スクレーパーからリンクデータベースを保護するにはどうすればよいでしょうか?
- 17. hbaseを保護するにはどうすればいいですか?
- 18. ラベール認証を保護するにはどうすればいいですか
- 19. プライベートAPIを保護するにはどうすればいいですか
- 20. AWS CloudFormationスタックを削除から保護するにはどうすればよいですか?
- 21. APIを不正使用から保護するにはどうすればよいですか?
- 22. C#opensourceゲームをハッキングから保護するにはどうすればよいですか?
- 23. API停止からサイトを保護するにはどうすればよいですか?
- 24. PHP画像アップロードスクリプトを悪用から保護するにはどうすればよいですか?
- 25. XSS攻撃からAngular 2 SPAを保護するにはどうすればよいですか?
- 26. ドメインをパブリックビューから保護するにはどうすればよいですか?
- 27. パスワード保護されたフォルダからファイルをダウンロードするにはどうすればいいですか?
- 28. 保護されたWebサイトからのログイン、ナビゲート、返信はどうすればよいのですか?
- 29. 春のセキュリティで保護されるクラスを制限するにはどうすればよいですか?
- 30. JSONファイルをREST APIなどの方法で保護するにはどうすればよいですか?
GCにはGCが関係しているとは本当に疑問です... –