관리 메뉴

A seeker after truth

파이썬에 대한 기본 중 기본 배경지식 집합 본문

Programming Language/Python

파이썬에 대한 기본 중 기본 배경지식 집합

dr.meteor 2020. 1. 27. 14:31

*<파이썬 라이브러리를 활용한 데이터 분석 2판>(2019, 한빛미디어/o'relly)를 공부하며 작성한 내용입니다 (필사, 메모).

 


1. 파이썬, 루비와 같은 스크립트 언어로 작은 프로그램이나 업무 자동화 스크립트를 빠르고 간단하게 만들 수 있다.

2. 파이썬은 데이터 '어플리케이션' 개발을 위한 최고의 언어 중 하나.

3. 파이썬이 과학 기술 컴퓨팅 계에서 성공하게 된 이유 중 하나는 c, c++, 포트란 코드와 통합이 쉽다는 점이다.

대부분의 최신 컴퓨팅 환경에서는 선형대수, 최적화, 통합, 고속 푸리에 변환 같은 알고리즘을 위해 c 라이브러리나 포트란 레거시를 공유한다. 그런 연유로 많은 회사나 국가 연구소에서 수십 년이 지난 소프트웨어를 파이썬과 함께 사용하고 있다.

프로그램은 실행 시간의 대부분을 차지하는 작은 부분의 코드와 실행 시간을 얼마 차지하지 않는 많은 양의 "글루코드"(바인딩 코드라고도 함)로 이뤄져 있다. 대부분의 경우 글루 코드는 실행 시간에 영향을 주지 않을 만큼 비중이 낮다. 연산 병목을 최적화하기 위해 해당 부분을 c 언어 같은 저수준 언어로 옮겨 쓴다면 유익한 결과를 얻을 수 있다.

4. 파이썬은 연구를 하거나 프로토타입을 만드는 데 적합한 언어인데다 실제 시스템을 개발하는 데도 적합하기에 갈수록 더 인기를 끌고 있다. 하나의 언어로 충분하니 별도의 다른 개발 환경을 유지할 필요는 없기 때문이다. 연구자와 기술자가 같은 플밍 도구를 사용함으로써 얻을 수 있는 장점이 많으므로 앞으로 더 많은 기관에서 파이썬을 사용하게 될 것이다.

5. 파이썬이 분석 어플리케이션이나 범용 시스템을 개발하는 데 훌륭한 환경이긴 하지만 특수한 경우에는 파이썬이 아닌 다른 언어가 해답인 경우도 있다.

파이썬은 인터프리터 언어이므로 자바나 c++ 같은 컴파일 언어보다 많이 느리다. 하지만 개발자의 시간 비용은 CPU의 시간 비용보다 비싸므로 대개는 이런 등가 교환에 만족해한다. 그러나 실시간 거래 시스템처럼 매우 짧은 응답 시간을 필요로 하는 애플리케이션에서는 가능한 한 최고의 성능을 내고자 생산성은 떨어지지만 c++같은 저수준 언어로 개발을 한다.

파이썬은 동시다발적인 멀티스레드를 처리하거나 cpu에 집중된 많은 스레드를 처리하는 애플리케이션에 적합한 언어가 아니다(어... 도서관에서 파이썬 동시성 프로그래밍 책을 본적은 있는데...). 바로 GIL(global interpreter lock, 전역 인터프리터 잠금) 때문이다. 이 메커니즘은 인터프리터가 한 번에 하나의 파이썬 명령만 실행하도록 한다. 대체로 빅데이터 처리 애플리케이션에서는 단일 클러스터가 적절한 시간 안에 데이터를 처리해야 하기에 단일 프로세스, 멀티스레드 시스템을 선호하는 경우도 있다.

그렇다고 엄밀히 말해서 파이썬이 멀티스레드나 병렬 코드를 실행하지 못한다는 뜻은 아니다. 네이티브 수준에서 멀티스레드를 활용하는 파이썬 c 확장을 통해 GIL에 구애받지 않고 병렬 코드를 실행할 수 있다.

5. 주피터 노트북의 원형은 IPython이다! 이것은 대화형(인터랙티브) 파이썬 인터프리터다. 이는 많은 프로그래밍 언어들의 전통적 특징인 편집-컴파일-실행 방식 대신 실행-탐색 방식을 장려하며 파일 시스템과 운영체제 셸에도 쉽게 접근할 수 있다. 데이터 분석 코드를 작성할 땐 이 툴이 유용하다. 데이터 분석은 탐색 작업을 반복하는 일이기 때문.

 IPython 시스템은 이제 주피터 노트북의 커널 역할로써 한 컴포넌트가 되었다.