0. 개요


파이썬 개발을 위해서 굳이 쥬피터를 사용하지 않아도 상관없다. 오히려 웹 상에서 개발이 진행되기 때문에 불편한 점이 많은 것이 사실이다. 예를 들어, 다른 IDE 툴에서 유용하게 사용하는 [ctrl + z]가 쥬피터에서는 유용하지 않다. 또한 동일한 단어를 찾아서 모두 교체하는 기능 역시 웹 상에서 동작하지 않기 때문에 불편하다. 그렇다면 쥬피터를 사용해서 얻을 수 있는 장점은 무엇이 있을까? 파이썬 강의 첫 번째 글에 작성한 것 처럼 하나의 문서내에 그래프, 인풋, 아웃풋, 노트 등의 기능을 모두 담을 수 있다는 점이 가장 큰 장점이다. 오늘 강의는 그런 쥬피터 환경이 가지고 있는 이점을 최대한 정리하려한다.



1. Magic Command


쥬피터 환경에서 제공하는 매직 커맨드는 수십가지가 있다. 이들 모두를 다룰 것은 아니고 눈에 띄는 몇 가지 명령어만 다뤄 볼 참이다. 기본적으로 리눅스 쉘에서 사용하는 명령어들이 몇몇 제공되고 있다. 간단히 확인해 볼 명령어는 ls 명령어와 pwd 명령어다. 리눅스 쉘에서 자주 사용하는 명령어며, 내용이 특히 간단하다. 매직 커맨드 목록을 보기 위해 아래의 명령어를 입력하자.

%lsmagic


매직 커맨드는 앞에 % 문자를 기본적으로 붙여주며, 이어서 ls 명령어와 pwd 명령어를 실행한 결과를 확인할 수 있다.


필자가 조금 더 인상깊었던 매직 커맨드는 %timeit 이라는 커맨드인데 이는 코드의 수행시간을 알려준다. 단순히 한 번 동작한 시간을 알려주는 것이 아니라 수 백, 수 천번 이상을 수행한 뒤 평균적인 시간을 출력해준다는 점이 특징이다. 수행 시간이 상당히 긴 코드의 경우 적게 반복하고, 수행 시간이 짧은 코드의 경우 수 만번 이상 반복하여 평균한 시간을 알려준다. 코드의 수행시간에 따라서 상당히 유연하게 동작하는 것을 알 수 있다. 지난 시간에 만들었던 리스트의 모든 요소들을 제곱하는 함수의 수행 시간을 알아보자.



List Comprehension으로 반복문을 구동한 시간을 알아봤다. 내용을 보면 간단한 코드인만큼 1,000,000 번 반복해서 가장 느렸던 시간과 함께 1회 반복마다 걸린 시간을 알 수 있다. 성능을 비교할 때 유용한 명령어이므로 기억해두자.



2. Interactive Widgets


쥬피터의 가장 큰 장점을 확인할 수 있는 부분인데, 인터렉티브한 문서를 작성가능하다는 점이다. 하나의 문서내에 유투브 영상 및 파라미터를 인터렉티브하게 조절할 수 있는 바를 제작해보자. 먼저 유투브 영상을 문서에 포함하기 위해서는 아래처럼 유투브 비디오를 import 해줘야한다.

from Ipython.display import YouTubeVideo

YouTubeVideo('j9YpkSX7NNM')


위 코드의 첫 번째라인에서 유투브 비디오를 import하고 있고, 두 번째 라인에서 유투브 영상을 삽입하고 있다. 괄호안에 j9YpkSX7NNM 는 유투브 영상주소에 포함되어 있는 고유값으로 해당 값을 입력해주면 정상적으로 문서에 해당 영상을 포함시킬 수 있다.



이어서 볼 위젯은 인터렉티브하게 값을 변경할 수 있는 Bar 기능이다. 이 역시 import 과정이 필요하다. 코드를 통해 확인해보면 다음과 같다.

from ipywidgets import interact

@interact(x=(0, 10))

def square(x):

return ("The square of %d is %d.", % (x, x**2))


위 코드 첫 번째 라인에서는 필요한 부분을 import하고 있고, 두 번째 라인에서 square 함수에 인수로 전달되는 x의 값을 0에서부터 10까지 조절할 수 있도록 위젯를 형성하고 있다. 코드를 수행한 결과 아래의 화면을 보면 가로로 긴 Bar가 생긴 것을 확인할 수 있다.


비록 사진에서는 멈춰있지만 실제로 마우스를 통해 바를 움직여보면 그에 따라서 출력되는 값이 실시간으로 변하는 것을 확인할 수 있다. 



3. 마치며...


오늘 알아본 매직 커맨드와 인터렉티브 위젯들은 Jupyter/IPython 환경에서 제공하는 다양한 내용 중에 극히 일부에 불과하다. 제공하고 있는 많은 매직 커맨드를 경험해보고, 본 글에서 다루지 않았던 다양한 위젯을 응용해 본다면 더욱 매력적인 문서를 작성할 수 있을 것이다. 더불어 디버깅 툴처럼 개발자들이 유용하게 사용할 수 있는 기능을 제공하니 참고하여 효율적으로 활용하도록 하자.