[Python] 가상환경 (pipenv,venv, conda) 종류 비교 및 사용법
·
Programming/Python
가상환경이란? 개발 시 다양한 라이브러리와 의존성을 효과적으로 관리하기 위해 가상환경을 사용하는 것이 일반적이다. 가상환경은 프로젝트별로 독립된 파이썬 실행 환경을 제공하여, 서로 다른 프로젝트 간의 의존성 충돌을 방지한다. 가장 널리 사용되는 세 가지 가상환경 관리 도구인 pipenv, venv, conda에 대해 알아보고, 각각의 특징과 차이점을 비교해보자. 1. pipenv파이썬에서 공식으로 권장하는 패키지 관리 도구이다. (가장 많이 사용됨)특징 가상환경과 의존성 관리 통합: pip와 venv의 기능을 하나로 합쳐서, 프로젝트별 가상환경을 자동으로 생성하고 관리하며, 필요한 패키지를 설치한다. 명시적인 의존성 관리: Pipfile과 Pipfile.lock 두 파일을 사용하여 프로젝트 의존성을 관리..
[OS] 사용자 스레드(User Thread)와 커널 스레드(Kernel Thread)
·
Computer Science/Operating System
사용자 스레드 (User Thread) 커널과 상관없이 완전한 사용자 수준(User-level)의 패키지 사용자 수준의 스레드 라이브러리(Library)를 통해 구현됨 스레드 라이브러리는 커널 지원없이 스레드 생성, 동기화, 스케줄링, 관리 기능 제공 장점 성능 (속도가 빠름) 복잡한 비동기 기법을 ‘라이브러리’가 제공] 커널 스레드 (Kernel Thread) 운영체제(Kernel)가 지원하는 스레드 기능으로 구현됨 스레드 생성, 동기화, 스케줄링, 관리가 커널에 의해 커널 공간에서 행해짐 일반적으로 ‘사용자 스레드’에 비해 ‘생성’,’관리’가 너무 느림 다중 스레드 모델 3가지 다-대-일 (Many-to-One) 많은 ‘사용자 스레드’를 하나의 ‘커널 스레드’로 매핑 스레드 관리는 사용자 공간의 스레..
[OS] 멀티코어 프로그래밍 (Multicore Programming), 병렬 실행(Parallelism)
·
Computer Science/Operating System
멀티코어 or 멀티프로세서에서의 극복해야 할 도전과제 5개 태스크 인식 (Identifying Tasks) 병렬 처리가 가능한 태스크로 나눌 수 있는 영역을 찾는 작업 필요 균형 (Balanace) 전체 작업에 균등한 기여도록 가지도록 태스크를 나눠야 함 데이터 분리 (Data Splitting) 처리하는 데이터들이 분리된 개별 코어에서 수행해도록 나눠야 함 데이터 종속성 (Data Dependency) 데이터 의존성을 조정하기 위한 태스크 실행 동기화 필요 시험 및 디버깅 (Testing & debugging) 병렬로 실행되기 때문에, 단일 스레드 응용보다 Testing 및 Debugging이 어려움 병렬 실행(Parallelism)의 유형 데이터 병렬 실행 (Data Parallelism) 데이터(D..
[OS] 스레드(Thread)란?
·
Computer Science/Operating System
스레드 개발 동기 DB 서버의 요구 처리 과거 서버는 클라이언트 요구가 도착할 때마다, 새로운 프로세스를 생성 - fork() 단점 프로세스 생성에 대한 오버헤드 (생성 비용 비쌈) 프로세스간 통신 비용 큼(메시지 패싱, 공유 메모리) 네트워크와 같은 자원 공유가 어려움 프로세스를 처리기에 전달하고, 결과를 다시 수집하는 오버헤드 전통적인 PCB(Process Control Block) 구성 스레드 (Threads) CPU 이용의 기본단위 경량 프로세스 (LWP: Light Weight Process) 애플리케이션 내에서 실행 커널은 일반적으로 다중 스레드(Multi Thread) 프로세스 생성은 무겁고, 스레드 생성은 가벼움 구성 고유한 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택 등 같은 프..
HaSeon9
기억보단 기록을