본문 바로가기

Python

(18)
np.clip 과 min,max 성능비교 어떤 변수의 값을 일정 범위 내로 제한하는 함수는 종종 쓰인다. 많이 사용하는 방법으로는 파이썬 내장함수인 min, max 가 있고, numpy 의 np.clip 을 사용하는 방법이 있다. 먼저... NumPy의 np.clip 함수는배열의 값이 지정한 최소값과 최대값을 벗어나지 않도록 잘라주는 함수 즉,최소값보다 작으면 최소값으로최대값보다 크면 최대값으로그 사이 값은 그대로 유지해주는 함수이다. 사용하는 것도 간단한데, numpy.clip(a, a_min, a_max)a: 대상 배열a_min: 최소값a_max: 최대값→ a의 값들을 a_min~a_max 범위로 제한한 결과 배열 반환 자, 실제 사용예제를 보자. import numpy as np# 원본 배열arr = np.array([-5, 0, 3,..
Dear Imgui 파이썬 라이브러리(imgui_bundle) Dear Imgui 는 C++ GUI 라이브러리로 간단하면서도 빠르게 GUI를 개발할 수 있어서 최근 많이 사용되고 있다. 단점은... 개발해놓은 GUI가 별로 예쁘지 않다. 딱 개발자가 사용하기 좋은 GUI 라고 할까? Imgui 에 대한 파이썬 바인딩은 뭐가 있는지 알아보자. 1) pyimgui가장 오래된 원조격 바인딩Dear ImGui C++ 라이브러리를 Python에서 바로 쓸 수 있게 바인딩한 것OpenGL, SDL2, GLFW 같은 백엔드랑 같이 사용 가능ImPlot이나 ImGuizmo 같은 확장 기능은 따로 제공 안 함2) imgui_bundle가장 최근 주목받는 고급 통합 버전Dear ImGui + ImPlot + ImGuizmo + imgui-knobs + 기타 위젯을 한 번에 제공C+..
파이썬 SharedMemory 사용법 (mp.Value 와의 차이) 파이썬에서 shared memory 사용법을 알아보자. 참고로 서로 다른 프로세스 사이에 데이터를 전송하는 방법은 queue, pipe, shared memory 등이 있는데, 이 중에 shared memory가 가장 성능이 좋다. 다만 Lock 등을 잘 써야하는 단점이 있다. 파이썬에서 shared_memory는 multiprocessing.shared_memory 모듈을 통해 프로세스 간 데이터를 메모리를 통해 빠르게 공유할 수 있는 기능이다. Python 3.8 이상부터 기본 제공된다. 기본 개념은 아래와 같다. SharedMemory 객체를 생성해서 이름 기반으로 프로세스 간 공유numpy.ndarray나 byte buffer를 메모리에서 공유 가능다른 프로세스는 이름으로 attach주요 클..
파이썬 데이터 압축 전송 데이터 전송시에는 항상 압축에 대한 유혹이 생긴다. 압축해서 보내면 전송량도 줄어들테고, 저장용량도 줄어들텐데...문제는 압축에 소요되는 비용과 수신단에서 다시 풀어야 하는 비용이 항상 걸린다. 파이썬에서 UDP 소켓을 이용해서 데이터 전송시에 압축해서 보내고, 수신측에서 압축을 풀어서 사용하는 예제를 한번 보자. 일단은 압축량보다 압축/해제에 소요되는 시간을 최소화하는 형태로 해보자. 지피티에게 예제를 물어보자. UDP 소켓을 사용해서 데이터를 압축 후 전송하고, 수신 측에서 압축 해제하는 Python 예제를 만들어 드릴게요.압축은 빠른 속도를 위해 zlib을 사용합니다 (compressobj).압축 해제는 속도가 다소 느려도 괜찮다고 하셨으니, 기본적인 zlib.decompress로 충분합니다...
파이썬 버전별 특징 (최근 버전이 좋다) 파이썬은 각 버전별로 변화가 많은 편이다. 물론 그래서 버전에 따른 라이브러리 호환 등의 문제도 같이 있지만...기본적으로는 가능하다면 최신 버전을 사용하는 것이 좋다. 왜냐하면 버전이 올라갈수록 실행속도의 차이가 생각보다 난다. 📌 Python 3.11의 주요 특징 (2022년 10월 릴리즈)속도 개선:평균적으로 Python 3.10 대비 10~60% 성능 향상Faster CPython 프로젝트의 첫 성과Exception Group & except* 문법:비동기/병렬 환경에서 여러 예외를 동시에 처리 가능 tomllib 표준 라이브러리 추가:TOML 파일 파싱 가능에러 메시지 개선더 직관적이고 상세한 에러 메시지📌 Python 3.12의 주요 특징 (2023년 10월 릴리즈)속도 또 개선Pytho..
ImGUI vs PySide6 파이썬에서 GUI 프로그램을 할 때, 어떤 라이브러리를 쓸 지 고민하게 된다. 보통 많이 쓰는 라이브러리로는 PyQT, tkinter, wxPython 정도가 나오기는 한다. 지피티에게 최근에 파이썬 GUI 로 유명한 것 5가지만 알려달라고 해보자. 파이썬 GUI 라이브러리 Top 51️⃣ PyQt / PySideQt 프레임워크의 파이썬 바인딩PyQt와 PySide는 거의 비슷하지만 라이선스 정책 차이 있음(PySide는 LGPL, PyQt는 GPL/상용)데스크탑 앱 개발에 가장 많이 씀Qt Designer로 시각적인 UI 설계 가능다양한 위젯, 네트워크, OpenGL, 데이터베이스 기능 포함🔍 대표 앱: Anki, Calibre2️⃣ Tkinter파이썬 표준 라이브러리(추가 설치 없이 바로 사용 ..
실시간 시스템에 파이썬 사용 가능성 일단 실시간 시스템이란 크게 2가지로 나뉜다. 하드리얼타임시스템과 소프트리얼타임시스템. 먼저 하드리얼타임 시스템(Hard Real-Time Systems) 은 처리 지연이 절대 허용되지 않는 시스템을 말하는데, 대표적으로 항공기 제어, 차량 ABS, 산업 로봇 제어 같은 것들이다. 이런 시스템은 보통 C/C++ 같은 저수준 언어로 많이 만든다. 이렇게 하드 리얼타임 시스템인 경우에는 파이썬을 사용하는 예를 거의 찾기는 힘들다. 다만 Python으로도 적절한 방법으로 실시간성 요구를 어느 정도 맞추는 어플리케이션에 활용하는 사례가 있기는 하다. 특히 Soft Real-Time 혹은 하드웨어 인터페이스를 C로 구현하고 상위 로직을 Python으로 처리하는 형태이다. 아래는 Python을 이용한 실시간 센..
파이썬 GUI 라이브러리 5가지 파이썬은 웹, 데이터 분석, 인공지능 등 다양한 분야에서 활용되지만, 데스크탑 애플리케이션 제작에서도 충분한 성능과 편리함을 제공한다. 그러나 검색해보면 파이썬에서 GUI 개발 관련 내용이 적은데, 찾아보면 사용할 수 있는 라이브러리가 다양하다. 대략적으로 5가지 파이썬 GUI 라이브러리에 대해서 알아보자. 1. PyQt / PySide아마 파이썬 GUI로 검색하면 가장 많이 나오는 라이브러리 일 것이다. PyQt와 PySide는 C++로 제작된 크로스 플랫폼 프레임워크인 Qt의 파이썬 바인딩이다. 두 라이브러리는 기능과 구조가 거의 비슷하지만, 라이선스 차이로 용도에 따라 선택할 수 있다. PyQt는 GPL과 상용 라이선스를 제공하고, PySide는 LGPL 라이선스를 사용해 상업적인 프로젝트에 더 유..