Я пытаюсь отладить подпроцесс Python (запущен с многопроцессорным процессом). Я создал более простой проект только с помощью следующего кода, запустил удаленный отладчик, а затем запустил проект. Я ожидаю, что Eclipse разобьется на утверждение settrace.PyDev и отламывание сломается молча
import multiprocessing
import pydevd
def new_proc():
print("New Procedure.")
pydevd.settrace()
print("After settrace.")
p = multiprocessing.Process(target=new_proc)
p.start()
p.join()
Я вижу вывод из первого оператора печати, но не из второго, и никакой разрыв не выполняется.
Затем я отправил settrace() параметр «suspend» с помощью False.
import multiprocessing
import pydevd
def new_proc():
print("New Procedure.")
pydevd.settrace(suspend=False)
print("After settrace.")
p = multiprocessing.Process(target=new_proc)
p.start()
p.join()
На этот раз я вижу оба сообщения, как ожидалось. Затем я установил точку останова во втором операторе печати и снова запустил. Теперь я больше не вижу второго сообщения.
Следовательно, похоже, что Eclipse нарушает выполнение, когда это предполагается, но не возвращает мне контроль. Есть что-то, что мне не хватает?
Что ?? Хахаха. Где для файла PyDev требуется документация freeze_support(), требуемая для отладки PyDev? –
Это не имело значения. –
Какая ОС вы используете? (freeze_support требуется для многопроцессорности в Windows) –