Магические команды IPython: обзор
Содержание курса
Примеры использования магических команд
Попробуем несколько магий в действии:
# Навигация
%pwd # вывести текущую директорию
%ls # показать файлы
%cd data/ # перейти в папку data
%ls # показать содержимое data
%cd .. # вернуться назад
# Работа с переменными
a = 10
b = [1, 2, 3]
%who # покажет: a, b
%whos # покажет детальную информацию о a и b
# Измерение времени
%time sum(range(1000000))
%timeit [x*x for x in range(1000)]
# Сохраним переменную между сессиями
long_list = list(range(10000))
%store long_list
Объяснения:
-
%pwdмы применили внутриprint– да, магию можно вставить как выражение, обернув в(). Это фишка IPython:%pwdвозвращает строку текущей директории, и мы напечатали её. Затем%lsвыдал список файлов,%cd data/вошли в папку data (покажет новый путь), ещё раз%ls– уже в папке data.%cd ..– обратно. -
%whoнапечаталa b.%whosдал что-то вроде:Variable Type Data/Info ----------------------------- a int 10 b list list of length 3
-
%timeсуммировал миллион чисел и вывел, например:CPU times: user 12 ms, sys: 0 ns, total: 12 ms Wall time: 11.9 ms
А
%timeitдля списка квадратов покажет, например:1000 loops, best of 5: 189 µs per loop
(то есть ~0.000189 секунды на выполнение списка квадратов от 0 до 999).
-
%store long_listсохранитlong_list. Теперь даже если вы перезапустите kernel, вы можете выполнить%store -r long_listи восстановить переменную (особенно актуально для долгих расчётов, чтобы не пересчитывать).
Обратите внимание: магические команды – это инструмент опытного пользователя, они не обязательны. Можно обойтись и без них (выполняя команды через ! или функции Python), но они делают работу более удобной. Со временем вы запомните основные.
Выбор между %time и %timeit
Для одной операции %time показывает длительность конкретного исполнения. %timeit повторяет вычисление и оценивает время нескольких прогонов. Это удобнее для короткого выражения, но повторное исполнение должно быть допустимым. Не измеряйте так отправку платежа или запись сообщения во внешний сервис.
Для самопроверки сравните создание списка квадратов и создание генератора. Если во втором случае не потребить генератор, вы измерите создание объекта вместо вычисления всех квадратов. Сравниваемые фрагменты должны выполнять одинаковый объём работы и возвращать сопоставимый результат.
В отчёте укажите размер входа, состояние окружения и операцию. Первый запуск может включать импорт или прогрев, а последующие — использовать кеш. Ускорение маленького фрагмента не означает ускорения всего ноутбука. Если код существенно меняет состояние, подготовьте независимый вход для каждого повторения.
Продолжите разбор: Отладка и обработка ошибок в ноутбуке.
