Python 다중 프로세스 및 비동기 프로그래밍 개요
1. 다중 프로세스 개발
프로세스는 운영 체제에서 리소스 할당의 최소 단위이며, 각 프로세스는 독립적인 메모리 공간과 시스템 리소스를 가집니다. 하나의 프로세스 내에는 여러 스레드가 존재할 수 있으며, 이 스레드들은 프로세스의 리소스를 공유합니다. Python에서 다중 프로세스를 사용하면 CPU의 다중 코어 이점을 활용할 수 있어, 주로 계산 집약적인 작업에 적합 ...
8월 14일 11:54에 게시됨
파이썬 비동기 프로그래밍: 비동기 컴프리헨션 완벽 가이드
비동기 컴프리헨션의 핵심 개념
파이썬의 리스트·딕셔너리 컴프리헨션은 간결하고 효율적인 데이터 생성 패턴으로 널리 알려져 있습니다. asyncio 환경에서는 이 개념이 확장되어 비동기 컴프리헨션(async comprehension)을 제공합니다. 이를 통해 비동기 이터러블이나 코루틴 컬렉션을 우아하게 처리할 수 있습니다.
기본 컴프리헨션 복습
기존 동기 환경의 컴프리헨션을 ...
7월 25일 23:20에 게시됨
Python 비동기: 태스크 집합 대기하기
비동기 작업의 완료를 기다리기 위해 Python의 asyncio.wait() 함수를 사용할 수 있습니다. 이 함수는 다양한 조건에 따라 실행될 수 있습니다. 예를 들어 모든 태스크가 완료되거나, 첫 번째 태스크가 완료되었을 때, 또는 첫 번째 태스크가 예외로 실패했을 때까지 기다릴 수 있습니다.
아래에서는 이를 더 자세히 살펴보겠습니다.
1. asyncio.wait()란?
asyncio.wait() ...
7월 23일 07:57에 게시됨
파이썬 동시성 프로그래밍: 멀티프로세스와 멀티스레드 활용 가이드
1. 멀티프로세스 (Multi-processing)
프로세스는 실행 중인 프로그램의 인스턴스로, 각 프로세스는 독립된 메모리 공간을 가집니다. 파이썬에서는 multiprocessing 모듈을 통해 병렬 처리를 구현할 수 있습니다.
프로세스 생성의 두 가지 방식
첫 번째 방식은 Process 클래스를 직접 인스턴스화하여 대상 함수를 지정하는 방식이며, 두 번째 방식은 Process 클래스를 상속 ...
7월 22일 10:06에 게시됨
파이썬 비동기: 여러 코루틴 동시 실행하기
asyncio의 핵심 장점 중 하나는 다수의 코루틴을 동시에 실행할 수 있다는 점입니다. 이러한 코루틴들은 하나의 그룹으로 구성되어 저장된 후 병렬적으로 실행될 수 있으며, 이는 asyncio.gather() 함수를 통해 구현됩니다.
asyncio.gather() 함수 이해
asyncio.gather() 함수는 여러 awaitable 객체들을 하나로 묶어주는 유틸리티입니다. 이를 통해 여러 작업이나 코루 ...
7월 19일 17:36에 게시됨
Python 제너레이터의 작동 원리
Python에서 제너레이터(generator)는 이터레이터를 생성하는 강력한 도구입니다. 이 문서에서는 제너레이터의 개념부터 활용 방법까지 자세히 알아보겠습니다.
제너레이터 개념
제너레이터는 결과를 한 번에 리스트에 저장하지 않습니다. 대신 생성기의 상태를 유지하면서每次迭代 시 값을 반환하며, StopIteration 예외가 발생할 때까지 동작합니다. 이렇게 하면 메모리 ...
7월 16일 00:58에 게시됨
파이썬 비동기: 이벤트 루프의 핵심 개념
이벤트 루프란 무엇인가?
비동기 프로그래밍의 중심에는 이벤트 루프가 있다. 이는 단일 스레드 내에서 코루틴을 관리하고 실행하는 환경이다. 이벤트 루프는 비동기 작업의 흐름을 제어하며, 다음과 같은 기능을 수행한다:
코루틴의 실행 및 진행
콜백 함수 호출
네트워크 입출력 처리 (예: 소켓 통신)
서브프로세스 관리
이 패턴은 전통적인 반복 구조를 기반 ...
7월 9일 20:29에 게시됨
Hyperf HTTP 서버 부팅 과정 분석
Hyperf 프로젝트를 생성한 후 터미널에서 php bin/hyperf.php start 명령을 실행하면, 잠시 후 워커 프로세스가 시작되고 HTTP 서버가 9501 포트에서 대기 중이라는 로그가 출력된다.
[INFO] Worker#3 started.
[INFO] Worker#1 started.
[INFO] Worker#2 started.
[INFO] Worker#0 started.
[INFO] HTTP Server listening at 0.0.0.0:9501
브라우저에서 http:// ...
7월 4일 20:06에 게시됨
Python 비동기 프로그래밍: 코루틴과 Asyncio 이벤트 루프의 동작 원리
1. 동시성 프로그래밍과 코루틴(Coroutine)의 이해
1.1 코루틴의 정의와 위치
운영체제 관점에서 프로세스는 실행 중인 프로그램의 인스턴스이며, 스레드는 프로세스 내에서 실행되는 최소 단위의 작업 흐름입니다. 그렇다면 코루틴은 무엇일까요? 코루틴은 스레드 내부에서 실행되는 사용자 수준의 경량 스레드(Micro-thread)로, 단일 스레드 환경에서 동시성(Concurrenc ...
6월 22일 00:56에 게시됨
자바의 고급 개념: 스레드
왜 스레드가 필요한가?
컴퓨터의 기본 구성 요소인 입력/출력 장치, 계산기, 저장 장치, 제어 장치 간 성능 차이를 해결하기 위해 하드웨어와 소프트웨어에서 다양한 기술이 도입되었습니다. CPU는 캐시를 추가해 메모리 접근 속도를 조절하고, 운영체제는 프로세스와 스레드를 통해 CPU 자원을 분할 처리하며, 컴파일러는 명령어 실행 순서를 최적화하여 성능 향상을 추구 ...
6월 15일 02:05에 게시됨