Как использовать ipdb.set_trace в раздвоенном процессе
Я использую ipdb.set_trace()
, когда мне нужно установить точку останова в моем коде. Прямо сейчас я пытаюсь использовать его в процессе, который я создал с помощью multiprocessing
, в то время как код действительно останавливается, я не могу вводить что-либо, чтобы продолжить отладку. Есть ли способ правильно настроить мой stdin
?
В идеале я хотел бы представить новое открытие консоли каждый раз, когда разветвленный процесс остановлен для отладки, однако я не думаю, что это возможно.
Ответы
Ответ 1
В соответствии с Как подключить отладчик к подпроцессу python?, http://winpdb.org поддерживает отладку multiprocessing
.
Если вы предпочитаете делать больше работы для большей гибкости, есть несколько интересных идей на https://gist.github.com/csabahenk/6497709 (слишком долго для включения здесь).
Ответ 2
Иногда для отладки Вы можете изменить свой код, чтобы использовать multiprocessing.dummy. Таким образом, никакая вилка не будет выполнена, она будет работать с потоками и будет легче отлаживать.
Позже (после того, как ошибка раздавлена ...) вы можете вернуться к многопроцессорной обработке
multiprocessing.dummy - должен предлагать тот же API, что и многопроцессорность, поэтому его легко изменить...