ipdb.set_trace()
コードにブレークポイントを設定する必要があるときはいつでも使用します。現在、を使用して作成したプロセスで使用しようとしていmultiprocessing
ますが、コードが停止している間、デバッグを続行するために何も入力できません。私のstdin
指示を適切に得る方法はありますか?
理想的には、フォークされたプロセスがデバッグのために停止するたびに新しいコンソールが開くことを想像したいと思いますが、これは不可能だと思います。
ipdb.set_trace()
コードにブレークポイントを設定する必要があるときはいつでも使用します。現在、を使用して作成したプロセスで使用しようとしていmultiprocessing
ますが、コードが停止している間、デバッグを続行するために何も入力できません。私のstdin
指示を適切に得る方法はありますか?
理想的には、フォークされたプロセスがデバッグのために停止するたびに新しいコンソールが開くことを想像したいと思いますが、これは不可能だと思います。
デバッグのために、コードを変更してmultiprocessing.dummyを使用することができます。この方法では、フォークは行われず、スレッドで動作し、デバッグが容易になります。
後で(バグがつぶされた後...)マルチプロセッシングに戻すことができます
multiprocessing.dummy - multiprocessing と同じ API を提供する必要があるため、簡単に変更できます...
How to attach debugger to a python subprocess? によると 、http://winpdb.orgmultiprocessing
はデバッグをサポートしています。
柔軟性を高めるためにもっと多くの作業を行いたい場合は、https://gist.github.com/csabahenk/6497709に興味深いアイデアがいくつかあります(ここに含めるには長すぎます)。