메모리 확인 - psutil import os import psutil pid = os.getpid() process = psutil.Process(pid) memory = process.memory_info().rss print(f"사용 중인 메모리: {memory / 1024**2}MiB") 현재 할당된 pid 값을 넘겨받은 psutil.Process는 memory_info를 통해 물리적 메모리의 사용량을 알려준다. 처음에는 데코레이터를 활용해 함수의 시작과 끝에서 메모리 확인을 통해 메모리 사용량을 측정하면 되지 않을까 생각했다. 하지만 Python은 내부적으로 Garbage Collector를 활용해 자동으로 메모리가 관리되기 때문에 함수가 실행되는 과정에서 메모리의 변화가 발생할 수 있다. 그래..
Python은 특정 프로그래밍 방식을 강제하지 않기 때문에 절차 지향, 객체지향, 함수형 등 다양한 방식으로 코드를 이어나갈 수 있다. 함수형 프로그래밍은 코드의 가독성을 높이고, 디버깅을 용이하게 만드는 등 여러 장점을 가지는 방식이다. Python에서도 map이나 filter와 같은 유용한 함수를 통해 그러한 장점을 살릴 수 있다. 하지만 함수형 프로그래밍을 Python에 적용하는 것이 항상 옳다고는 말할 수 없다. 파이썬 공식문서 중 "Functional Programming HOWTO"를 읽어봐도 functools.reduce와 같은 함수의 사용보다 for 루프를 사용한 명시적 표현이 더 명확할 수 있다고 언급하였다. 그렇기 때문에 특정 방식에 집착하기보다 코드의 가독성과 명시성이 중요하다는 대원..
openCV # Conda 설치 > conda install opencv # PIP 설치 > pip install opencv-python opencv는 VideoCapture을 통해 카메라로 인식된 영상을 처리한다. import cv2 cap = cv2.VideoCapture(0) while cap.isOpened(): ret, frame = cap.read() if ret: # 정상적으로 정보를 읽었을 때 else: # 정보를 읽지 못 했을 때 cap.release() VideoCapture의 경우, 사용할 카메라의 인덱스를 넘겨줘야 한다. 만약 연결된 카메라가 2개라면 첫 번째 카메라가 0, 두 번째 카메라는 1이 된다. isOpened는 카메라가 정상적으로 열려있다면 True를 반환한다. 따라서 ..
Anaconda 또는 miniconda를 활용해 가상 환경을 생성하고 활용하는 것은 파이썬 프로젝트 작업에서 매우 중요하다. 파이썬 버전에 따라 사용되는 패키지 버전이 다르고 일부 문법이 다르기 때문에 버전을 통일한 상태에서 협업을 해야 코드가 뒤엉키는 일이 없다. 예전에 가상 환경 없이 2개의 프로젝트를 진행하다 버전이 엉켜서 양쪽 다 정상적으로 작동하지 않는 일이 발생했었다. Anaconda | The World's Most Popular Data Science Platform Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open sou..
현재 대부분의 Python 코드는 표준적으로 3.6 이상의 버전을 사용하지만 간혹 2.x 버전의 코드를 읽어야 하는 상황이 생겨 일부 변경 사항을 정리해 보았다. 이곳에 작성되지 않은 변경 사항은 공식문서에서 확인할 수 있다. Python 2.7 실습: https://workat.tech/ide/online-python2-compiler 문자(열) 2.x: ASCII 3.x: UTF-8 2.x에서 UTF-8으로 인코딩하기 위해서는 아래 주석을 소스 코드 첫 줄에 작성해야 했다. # -*- coding: utf-8 -*- 2.x의 unicode 자료형(u'...')은 3.x에서 binary(b'...')가 되었다. 그리고 str과 binary를 섞어서 사용할 수 없다. 숫자 # 2.x >>> 3 / 2 1..
Python 3.10이 업데이트되면서 변화되거나 추가된 사항들이 있다. 공식문서: https://www.python.org/downloads/release/python-3100/ match / case 패턴 매칭은 C 언어에서 제공하는 switch/case 문과 유사하다. 하지만 패턴이 일치하면 해당 구문을 실행한 후, break 없이도 match문을 빠져나간다. a = 50 match a: case 50: print("50") case 100: print("100") case _: print("Nothing") # Output: 50 마지막 case _ 는 일치하는 값이 없을 때, 실행하는 구문이다. 만약 case _ 를 선언하지 않으면 아무 실행 없이 match 문을 종료한다. num = 1, 2 m..