マルチプロセス アプリケーションのデバッグに問題があります (具体的には、Python のマルチプロセッシング モジュールでプロセス プールを使用しています)。明らかなデッドロックがあり、何が原因なのかわかりません。スタック トレースは、マルチプロセッシング モジュールのコードのみを表示するため、問題を説明するには不十分です。
Python ツール、またはデッドロックのデバッグに使用される一般的な手法はありますか?
マルチプロセス アプリケーションのデバッグに問題があります (具体的には、Python のマルチプロセッシング モジュールでプロセス プールを使用しています)。明らかなデッドロックがあり、何が原因なのかわかりません。スタック トレースは、マルチプロセッシング モジュールのコードのみを表示するため、問題を説明するには不十分です。
Python ツール、またはデッドロックのデバッグに使用される一般的な手法はありますか?
ええ、デッドロックのデバッグは楽しいです。ロギング レベルを高く設定できます。詳細については、Python のドキュメントを参照してください。
import multiprocessing, logging
logger = multiprocessing.log_to_stderr()
logger.setLevel(multiprocessing.SUBDEBUG)
また、リソースや競合している可能性のあるものを処理するコード内のすべてのログを追加します。最後に、暗闇の中を撮影します。インポート中に子プロセスを生成すると、問題が発生する可能性があります。