아직 한국에서는 엔터프라이즈 환경에서 파이썬을 다루는 곳은 흔하지 않다. 서비스가 궤도에 오르기 전이거나 MSA의 일부분으로 선택되는 경우는 종종 봤지만 말이다. 아 물론, 여기서 이야기하는 부분은 서비스의 백엔드이다. 데이터 엔지니어링이나 머신러닝을 다루는 분야에서는 단연 파이썬은 독보적인 언어니까. 아무튼, 이런 시국에 한빛미디어에서 아주 묵직한 책이 나왔다. 무려 "Architecture Patterns with Python" TDD, DDD, EDM까지 적용한단다. 1부는 비교적 가볍다. 도메인 모델링을 지원하는 아키텍처 구축이라는 제목 아래 저장소 패턴과 추상화, 작업 단위 패턴을 이야기한다. 가볍지만 익숙하지 않다면 호락호락하지 않다. 파이썬 문법이야 당연히 아주 잘 알고 있다는 전제로 내용이..
프로그래밍을 하다 보면 필연적으로 메모리 사용량을 디버깅해야 하는 일이 생깁니다. 메모리 누수가 발생해서 디버깅을 해야 하는 경우도 있고 메모리 사용량이 비정상인 경우도 디버깅이 필요해요. 일부 언어는 힙 메모리 공간을 통째로 덤프 떠서 확인하는 일도 비일비재하죠. 이번 글에서는 파이썬 프로그램을 개발하면서 메모리 사용량을 추적하는 방법을 알아봅니다. 거창하게 시작했지만 파이썬에서 메모리 추적은 psutil 이 대표적입니다. 일단 사용 방법부터 바로 알아보고 조금 더 상세한 이야기를 해봅니다. 사용법은 심플합니다. 다음 공식 예제를 살펴보시죠. >>> import psutil >>> p = psutil.Process() >>> p.memory_info() pmem(rss=15491072, vms=8402..
Poetry는 "Python dependency management and packaging made easy."라는 모토로 움직이는 파이썬 의존성 관리 프로그램이다. conda, pyenv 등이 설치되어 있다고 가정했을 때 poetry의 위치는 아래 그림과 같다. 글의 전반에 걸쳐 이야기하겠지만 poetry는 가상환경을 만들 때 현재 시스템에 적용되어 있는 환경을 가져다 사용한다. 즉, conda 3.7 환경에서 poetry를 돌리면 파이썬 3.7 버전으로 가상환경이 만들어질 것이고, pyenv 3.9가 적용되어 있는 터미널에서 poetry로 install 하면 파이썬 3.9 버전으로 가상환경이 만들어진다. - see more # 주요 특징 - pip를 감추고 패키지와 디펜던시를 관리 함 ( 내부적으로..
파이썬은 인공지능, 빅데이터 분석/처리 트렌드와 함께 엄청난 인기를 얻었다. 전부터 마니아층이 두꺼웠지만, 본격적인 인기는 두 개의 트렌드와 함께했다. 파이썬이 없었다면 이 모든게 가능했을까 싶은 정도니까. 하지만 백엔드 개발 분야는 Spring Framework의 아성에 도전할 수 없을 정도로 레퍼런스가 밀리는 게 현실이고 Node.js, Go는 뛰어난 성능을 무기로 파이썬을 위협한다. "파이썬? 인공지능이나 데이터 분석할 때 적합하지! 백엔드? 글쎄....?" 그렇게 파이썬의 백엔드 겨울이 계속되던 중에 FastAPI가 등장했다. FastAPI는 파이썬으로 API를 빌드하기 위한 web framework이다. 공식 블로그에 안내된 fastapi의 장점 중에 현실로 와닿는 부분은 아래와 같다. - No..
파이썬과 머신러닝에 한참 빠져있다보니 여러 오픈소스를 살펴볼 수 있었는데요. 간혹 난해한 코드를 만나는 경우가 분명 있었습니다. 어떤 의미로 사용된 코드인지 이해하기 위해서 별도의 의사코드를 작성해서 진행을 해보기도 하고, 특히 matplotlib같은 경우에는 매번 당장 사용할 때가 아니면 그 사용법을 익혀두기 어려웠습니다. 그러던중 좋은 기회로 한빛미디어에서 출간된 Python for Data Analysis를 만나게 되었습니다. 1판이 무려 만 오천여부가 팔렸다고 하니 이미 그 수치에서 이 책은 신뢰할 수 있겠습니다. 책의 초판은 2012년에 출간되었고 당시에는 파이썬의 열풍이 지금처럼 대단하지 않았었죠. 이미 상당한 시간이 흘러 머신러닝과 빅데이터에 힘입어 Python은 이제 대세 language로..
우리가 개발한 프로그램을 테스트하는 방법론이 여러가지 나오고 있는데 이번에는 그 기본이 되는 unittest를 flask와 연계해서 알아보고자 합니다. 인터넷에 flask와 unittest로 검색해보면 Flask 공식 홈페이지를 포함해서 여러자료가 리스트 되지만 대부분 공식 홈페이지의 예제를 그대로 참고한 것으로 이해하기에 난해한 부분이 있습니다. 그래서 굳이 넘쳐나는 자료들 속에 다시 키보드를 잡아들었습니다. 아무튼 이번 글이 누군가에게 현실적인 도움이 되기를 바랍니다. Flask 코드 작성 우선 unittest를 위해 아래와 같은 코드를 작성해보도록 합시다. # contents of my_flask.py from flask import Flask app = Flask(__name__) @app.rou..
python에 librosa를 통해 오디오 파일을 numpy로 읽어오는 코드가 아래와 같이 작성되어 있습니다. import librosa wave_path = '/home/caley/test.wav' sr = 44100 try: wav_np = librosa.core.load(wave_path, sr=sr)[0] except FileNotFoundError as e: print(e) wave_path에 test.wav는 실제로 존재하는 파일이지만 웬일인지 librosa는 에러를 발생시킵니다. FileNotFoundError: [Errno 2] No such file or directory: 'avconv': 'avconv' 이유는 librosa가 내부적으로 사용..
이미 잘 구현되어 있는 소스코드와 데이터를 사용한 머신러닝의 경우에는 모델 내에 shuffle 자체가 구축되어 있는 반면에 데이터 수집과 정제, 모델 구축까지 밑바닥에서부터 쌓아 올리다보면 여러가지 난관에 봉착하게 된다. python 을 친숙하게 다루는 사람이라면 데이터를 다루는데 어려움이 없겠으나 수학적 지식이나 모델링쪽만 전문으로 했던 사람에게는 shuffle 자체도 쉬운게 아닐 것이다. random.shuffle 예제를 살펴보면 대부분 1차원 array 를 섞는것 뿐이라 우리의 (x, y) 데이터 쌍에서는 일반적인 방식으로는 사용할 수 없다. 여기서는 이런 상황에서 데이터셋을 shuffle 하는 방법 하나를 제시한다.예를들어 손글씨 인식을 할 때 사용하는 대표적인 MNIST 의 데이터를 우리가 직접..
https://conda.io/en/master/ python 을 가상환경으로 사용할 수 있도록 지원하는 프로젝트중 하나인 conda 를 실무에서 빠르게 사용 할 수 있도록 살펴보도록 합니다. ( 또 다른 가상환경 프로젝트인 virtualenv 는 이쪽을 참고하세요 ) 우선 우리가 사용하는 OS 에 맞게 다음 링크에서 아나콘다를 다운로드 받도록 합니다 https://www.anaconda.com/download/ 설치가 끝나면 터미널에서 conda 명령어를 통해서 모든 조작이 가능한데 필수적인 옵션을 하나씩 살펴보도록 합시다. ( 실행 화면 등이 포함되어 있기 때문에 PC 버전에서 최적화 되어 있습니다 ) # 버전 확인 : 사용하고 있는 conda 패키지의 버전을 확인한다.$ conda --version..
개인적인 업무 자동화를 위해 GCE 위에 python crawler 를 하나 개발하고 있는데 이게 영 잘 안되는거다. 처음에는 selenium 을 잘못 사용했나 싶기도하고 HTML 을 잘못 파싱했나 싶은 의심도 들었지만 해당 코드가 Local PC 에서는 정상적으로 동작 하는 것이 확인되었다. 무엇이 문제였을까? 문제를 확인하기 위해 에러 포인트 위치에서 아래와 같이 selenium 의 스냅샷 함수를 이용해서 페이지의 실제 화면을 확인해보았다.browser.get_screenshot_as_file('error.png') 확인결과 놀랍게도 아래와 같은 내용이 확인되었다. 왜 계정이 이렇게 되었는지는 알 수 없다. 아니면 Gmail 자체적으로 클라우드에서의 접근을 막고 있는지도 모른다. 일단 로컬에서 htt..
- Total
- Today
- Yesterday