Блокнот Jupyter, NameError: не определено, %%time предотвращает назначение

Я столкнулся с очень странной ошибкой при работе с Jupyter Notebook (IPython: 7.4.0), когда переменная не была назначена, как обычно. Мне потребовалось довольно много времени, чтобы выяснить причину, тщетно ища повсюду переменную область видимости, преобразование типов и тонкости TensorFlow ;(

На самом деле, использование магии ячейки %%time не позволяло присвоить значение переменной в ячейке. Поэтому назначенная переменная не была определена в ячейке ниже, выдавая характерное сообщение об ошибке: «NameError:« xxx »не определено».

Похоже, это известная проблема, надеюсь, это поможет кому-то еще.


person Claude COULOMBE    schedule 19.06.2019    source источник
comment
Я немного озадачен обсуждением вопроса. Я думал, что это нормально, что переменные, назначенные в блоке, строке или ячейке `timeit, будут локальными. Я не хочу, чтобы результаты 1000 итераций какого-либо действия «добавить» загрязнили мое основное рабочее пространство. Но тогда я смотрю на это как пользователь консоли, а не ноутбука.   -  person hpaulj    schedule 19.06.2019
comment
@hpaulj Я согласен с вами, но не у всех есть ваши знания и понимание iPython Notebook, и они все равно заслуживают помощи.   -  person Claude COULOMBE    schedule 13.01.2020


Ответы (1)


Решение простое, просто удалите %%time из ячейки.

Скорее используйте:

from timeit import default_timer as timer
from datetime import timedelta

start = timer()

# Process
# ...


end = timer()
print ("Execution time HH:MM:SS:",timedelta(seconds=end-start))

Источник: Stackoverflow — Измерение прошедшего времени в Python?

person Claude COULOMBE    schedule 19.06.2019