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에 게시됨
파이썬에서의 비동기 처리: 코루틴과 그 활용
코루틴은 파이썬에서 다중 작업을 구현하는 또 다른 방법으로, 스레드보다 더 작은 실행 단위이며 리소스 사용량도 적습니다. 이는 각 코루틴이 자체적인 프로세서 상태(컨텍스트)를 가지고 있어, 특정 시점에 한 코루틴을 다른 코루틴으로 전환할 수 있음을 의미합니다. 단지 컨텍스트 저장 및 복원만으로도 실행 흐름이 자연스럽게 유지됩니다.
간단히 말해, 하나의 스레 ...
6월 14일 23:05에 게시됨
파이썬에서 반복 가능한 객체와 제너레이터의 원리
컨테이너, 반복형, 반복자 개념 정리
파이썬에서는 데이터를 다루는 다양한 구조가 존재하며, 그 중 컨테이너(container)는 여러 요소를 담을 수 있는 자료구조입니다. 대표적인 예로 리스트, 튜플, 세트, 딕셔너리, 문자열 등이 있습니다.
assert 1 in [1, 2, 3] # 리스트
assert 'a' in {'a', 'b'} # 세트
assert 'x' in "hello world" # 문자열
assert ...
6월 3일 17:34에 게시됨