Режим отладки и запуска в Jupyter
Как и в matlab, есть ли в Jupyter возможность запускать функцию в режиме отладки, где выполнение приостанавливается в точках останова, а в режиме запуска функция игнорирует точки останова? В простом примере, как
from IPython.core.debugger import set_trace
def debug(y):
x = 10
x = x + y
set_trace()
for i in range(10):
x = x+i
return x
debug(10)
Возможно ли, что мы вызываем функцию так, что set_trace игнорируется и функция выполняется нормально?
Причина, по которой я хочу это сделать, состоит в том, что в моей функции я поместил много установленных трасс, и когда я просто хочу работать без трасс, мне нужно прокомментировать все установленные трассы. Есть ли более простой способ?
1 ответ
Я не знаю, как вы можете сделать это напрямую с Jupyter, но то, что вы могли бы сделать, это патч обезьяны set_trace()
таким образом (я бы порекомендовал поместить это в собственную ячейку, чтобы вы могли перезапустить его, когда вы захотите снова включить отладку):
from IPython.core.debugger import set_trace
debug_mode = False #switch this to True if you want debugging back on
if not debug_mode:
def pass_func():
pass
set_trace = pass_func
Что это делает, это привязать имя set_trace
быть функцией, которая просто ничего не делает, поэтому каждый раз set_trace()
называется, это будет просто pass
,
Если вы хотите снова включить отладку, просто переключите debug_mode
флаг для True
и снова запустить камеру. Это затем перепривязать имя set_trace
быть set_trace
импортировано из IPython.core.debugger
,