본문 바로가기
반응형

pyinstaller11

Python multiprocessing.Queue() 정상 종료 방법과 terminate(), close() 호출 시 동작 정리 Python multiprocessing.Queue() 정상 종료 방법과 terminate(), close() 호출 시 동작 정리Python에서 멀티프로세싱 기반으로 데이터 통신을 할 때 multiprocessing.Queue()를 자주 사용하게 됩니다. 하지만 사용 후 제대로 정리하지 않으면, 큐 내부 리소스나 자식 프로세스가 종료되지 않고 백그라운드에 남아 시스템 자원을 계속 점유하게 됩니다. 이 포스트에서는:multiprocessing.Queue()의 정상적인 종료 방법큐나 프로세스가 이미 종료된 후에 terminate() 또는 close()를 호출하면 어떻게 되는지실전에서 사용할 수 있는 안전한 종료 패턴을 모두 정리합니다.✅ 문제 배경Queue는 내부적으로 pipe + 백그라운드 스레드로 동작P.. 2025. 6. 17.
PySide6 GUI에서 self.close() 후에도 백그라운드 프로세스가 종료되지 않는 이유와 해결 방법 PySide6 GUI에서 self.close() 후에도 백그라운드 프로세스가 종료되지 않는 이유와 해결 방법PySide6 기반 GUI 애플리케이션을 개발하다 보면, self.close()나 창 우측 상단의 [X] 버튼을 눌러 UI를 종료했음에도 불구하고 프로세스가 백그라운드에 남아있는 현상을 경험할 수 있습니다. 심지어 PyInstaller로 패키징한 후 실행하면 종료된 줄 알았던 앱이 작업 관리자에 여전히 남아 있는 경우도 있죠. 이 글에서는 해당 문제의 원인과 확실한 해결 방법을 상세히 정리합니다.✅ 문제 요약 증상 설명 UI 창은 닫혔지만MainWindow는 닫혔지만, 내부에서 실행 중인 프로세스는 계속 동작작업 관리자에 프로세스가 남아 있음python.exe 또는 빌드된 .exe가 종료되지 않음.. 2025. 6. 16.
PyInstaller + NSIS로 Python 앱 설치 EXE 만들기 (환경 변수 설정 포함) PyInstaller + NSIS로 Python 앱 설치 EXE 만들기 (환경 변수 설정 포함)Python으로 만든 PySide6 또는 CLI 앱을 PyInstaller로 EXE로 빌드했다면, 이제 설치형 EXE로 포장할 차례입니다. 이때 NSIS(Nullsoft Scriptable Install System)를 활용하면, 일반적인 윈도우 프로그램처럼 설치 경로 지정, 시작 메뉴 등록, 환경 변수 등록 등을 할 수 있습니다. 이번 포스팅에서는 PyInstaller + NSIS 조합으로 설치형 패키지를 만드는 방법과 환경 변수까지 자동으로 등록하는 스크립트 예제를 소개합니다.🧱 구성 요소 요약 구성 요소 역할 PyInstallerPython 코드를 실행 가능한 단일 EXE로 빌드NSISEXE를 설치 프.. 2025. 6. 15.
PyInstaller로 PySide6 앱 빌드 시 QSS, 이미지, QRC 리소스 포함하는 방법 PyInstaller로 PySide6 앱 빌드 시 QSS, 이미지, QRC 리소스 포함하는 방법PySide6로 만든 Python GUI 앱을 PyInstaller로 EXE 파일로 배포하려면 .png, .ico, .qss, .qrc 같은 리소스 파일을 함께 포함하는 작업이 꼭 필요합니다. 이 과정을 제대로 처리하지 않으면, 빌드 후 실행 시 이미지가 안 보이거나 스타일이 적용되지 않는 문제가 생깁니다. 이번 포스팅에서는 PyInstaller로 리소스를 안전하게 포함하고 사용하는 방법을 정리합니다.1. 포함할 수 있는 리소스 유형✅ .qss: 스타일 시트✅ .png, .ico: 이미지 및 아이콘✅ .qrc: Qt 리소스 정의 파일 (리소스 통합용)✅ .ui: Qt 디자이너에서 만든 UI 파일 (※ 추천: ... 2025. 6. 14.
PyInstaller로 빌드한 PySide6 앱에서 multiprocessing.Process가 동작하지 않을 때 해결 방법 PyInstaller로 빌드한 PySide6 앱에서 multiprocessing.Process가 동작하지 않을 때 해결 방법Python으로 GUI 앱을 만들 때 PySide6와 multiprocessing을 함께 사용하면, 메인 UI의 응답성을 유지하면서 백그라운드 작업을 처리할 수 있습니다. 그런데 PyInstaller로 이 앱을 EXE로 빌드하고 실행하면, 코드상에서는 잘 되던 multiprocessing.Process가 작동하지 않는 경우가 있습니다. 이 문제의 원인과 해결 방법을 이번 포스팅에서 정리해보겠습니다.문제 상황예를 들어 아래와 같은 코드에서:import multiprocessingdef run(queue, exe_arg_list, open_enable): print("Process.. 2025. 6. 12.
PySide6 GUI 앱에서 multiprocessing.Queue와 Process 안전하게 종료하는 방법 PySide6 GUI 앱에서 multiprocessing.Queue와 Process 안전하게 종료하는 방법PySide6 기반 GUI 프로그램에서 multiprocessing.Process와 multiprocessing.Queue를 사용하는 경우, UI를 닫더라도 백그라운드 프로세스가 종료되지 않고 리소스를 점유하는 현상이 발생할 수 있습니다. 특히 PyInstaller로 EXE를 만들었을 때 더욱 민감하게 반응합니다. 이 글에서는 Queue와 Process를 정상 종료하는 방법과, 종료 이후 terminate()와 close()를 다시 호출하면 어떻게 되는지 실전 예제와 함께 설명합니다.✅ 문제 현상self.close() 또는 MainWindow.close() 호출 시 UI는 종료되지만,백그라운드에서 실.. 2025. 6. 11.
반응형