IPython 매직 명령어 모음

2021. 6. 30. 21:48캐리의 데이터 세상/캐리의 데이터 공부 기록

반응형

IPython 인터프리터에 추가된 특수 명령어인 매직 명령어(magic functions) 중 자주 사용하는 명령어를 아래와 같이 살펴보겠습니다. %기호로 시작하며 만약 매직함수와 같은 이름의 변수가 선언되어 있지 않다면 기본적으로 % 기호 없이도 매직 함수를 사용할 수 있습니다. 이를 오토매직 automagic이라고 하는데 %automagic을 이용해서 이 기능을 켜거나 끌 수도 있습니다.

 

 

자주 사용하는 IPython 매직 명령어

 

명령어 설명
%quickref IPython의 빠른 도움말 표시
%magic 모든 매직함수에 대한 상세 도움말 출력
%debug 최근 예외 트레이스백의 하단에서 대화형 디버거로 진입
%hist 명령어 입력 히스토리 출력
%pdb 예외가 발생하면 자동으로 디버거로 진입
%paste 클립보드에서 들여쓰기 된 채로 파이썬 코드 가져오기
%cpaste 실행할 파이썬 코드를 수동으로 붙여 넣을 수 있는 프롬프트 표시
%reset 대화형 네임스페이스에 정의된 모든 변수와 이름을 삭제
%page OBJECT 객체를 pager를 통해 보기 좋게 출력
%run script.py 지정된 스크립트를 실행
%prun statement cProfile을 이용하여 statement를 실행하고 결과를 출력
%time statement statement의 단일 실행 시간을 출력
%timeit statement statement를 여러 차례 실행한 후 평균 실행 시간을 출력. 매우 짧은 시간 안에 끝나는 코드의 시간을 측정할 때 유용함
%who, %who_ls, %whos 대화형 네임스페이스 내에 정의된 변수를 다양한 방법으로 표시
%xdel variable variable을 삭제하고 IPython 내부적으로 해당 객체에 대한 모든 참조를 제거

 

 

 

 

매직 명령어 실행 예시

o'reilly 시리즈 중  올해 개정된 <파이썬 라이브러리를 활용한 데이터 분석>책을 조금씩 보고 있는데요, 아래 코드는 책에 실린 매직 명령어 예제 중 일부입니다. 주피터 노트북이나 혹은 코랩에서 한번 실행시켜 보세요. 

# 행렬 곱셈 같은 코드가 실행된 시간을 측정하고 싶을 때

import numpy as np

a = np.random.randn(100,100)

%timeit np.dot(a,a)
#결과
35.6 µs ± 1.01 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%pwd
#결과
 'C:\\Users\\바탕 화면\\파이썬 연습'

%time np.dot(a,a)
#결과
Wall time: 987 µs
array([[ 13.28627589,  -4.74782856,   3.90051145, ...,   4.12998132,
         -1.34842377,   7.10244035],
       [ -5.32338013,  -7.78288728, -26.36832733, ...,  17.88650483,
         -8.07419406,  -2.83192894],
       [ -5.96396267,   8.09937546,  21.18513248, ...,  -4.23809117,
        -11.55189932,   5.94434464],
       ...,
       [ 11.30521634,  19.4757304 ,  16.03936497, ...,  -5.90619226,
        -11.0187052 ,   4.74311759],
       [ 13.17767739,  17.97823843,  10.96004146, ...,   0.93789237,
         -1.95780555,  -6.39983762],
       [  9.30081448,  12.69073687,  -3.90632694, ...,   6.3560083 ,
         17.05647327,   3.19946632]])

%hist
#결과
a = np.random.randn(100,100)
%timeit np.dot(a, a)
import numpy as np
a = np.random.randn(100,100)
%timeit np.dot(a, a)
%debug?
%time np.dot(a, a)
%who
%who_ls
%whos
%hist


%timeit 5*64
#결과
8.63 ns ± 0.0675 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)

 

▼ 보다 자세한 IPython 매직 명령어 리스트는 공식 페이지에서 확인하세요. 예제도 함께 확인할 수 있습니다.

https://ipython.readthedocs.io/en/stable/interactive/magics.html

 

Built-in magic commands — IPython 7.25.0 documentation

‘gtk3’, ‘inline’, ‘ipympl’, ‘nbagg’, ‘notebook’, ‘osx’, ‘pdf’, ‘ps’, ‘qt’, ‘qt4’, ‘qt5’, ‘svg’, ‘tk’, ‘widget’, ‘wx’). If given, the corresponding matplotlib backend is used, otherwise it will be

ipython.readthedocs.io

 

▼ 참고글

파이썬 - 주피터 노트북(Jupyter Notebook) 단축키 모음

반응형