파이썬 비동기: 작업 취소로부터 보호하기

asyncio의 Task 객체는 cancel() 메서드를 통해 실행을 중단할 수 있습니다. 특정 작업이 중요한 경우, asyncio.shield() 함수를 사용하여 해당 작업이 외부에서 취소되는 것을 방지할 수 있습니다. asyncio.shield()란? asyncio.shield()는 Awaitable 객체를 감싸는 Future를 생성하며, 이 Future는 취소 요청을 흡수합니다. 즉, shield로 래핑된 작업은 다른 코드에 의 ...

7월 2일 19:14에 게시됨

Python 비동기 프로그래밍: 코루틴과 Asyncio 이벤트 루프의 동작 원리

1. 동시성 프로그래밍과 코루틴(Coroutine)의 이해 1.1 코루틴의 정의와 위치 운영체제 관점에서 프로세스는 실행 중인 프로그램의 인스턴스이며, 스레드는 프로세스 내에서 실행되는 최소 단위의 작업 흐름입니다. 그렇다면 코루틴은 무엇일까요? 코루틴은 스레드 내부에서 실행되는 사용자 수준의 경량 스레드(Micro-thread)로, 단일 스레드 환경에서 동시성(Concurrenc ...

6월 22일 00:56에 게시됨

Python 동시성 및 네트워킹 프로그래밍 고급

사례 소개 온라인 쇼핑몰 회사에서 연말연시를 맞아, 고객 주문을 시뮬레이션하여 인터페이스를 통해 10만 건의 신규 주문을 생성해야 한다고 가정해 봅시다. 어떻게 처리하시겠습니까? 솔루션 탐색 순차 실행 (Serial Execution): 여러 작업이 순서대로 실행되는 방식입니다. 이전 작업이 완료되기 전까지 다음 작업은 차단됩니다. 동시성 (Concurrency): 여러 작업이 번 ...

6월 19일 17:47에 게시됨

Ant Design와 FastAPI로 실시간 시스템 명령 실행 및 로그 스트리밍 구현

구현 목표 및 기술 선정 웹 인터페이스에서 서버 측 명령을 실행하고 출력 결과를 실시간으로 확인하는 기능을 구축한다. 프론트엔드는 Ant Design의 컴포넌트 체계를 활용해 명령 입력과 로그 표시 영역을 구성하고, 백엔드는 FastAPI의 비동기 구조를 바탕으로 WebSocket을 통한 스트리밍 응답을 처리한다. 프론트엔드 구성 명령 입력창, 실행 버튼, 그리고 스크롤 가능 ...

5월 30일 05:39에 게시됨

이 방법을 사용하여 Python의 동시 작업 실행을 개선하세요

.thumb up, please! 문제 한때, Python의 멀티스레드 성능은 GIL로 인해 기대치에 미치지 못했습니다. 이에 3.4 버전부터 Python은 IO-bound 작업을 동시적으로 실행할 수 있는 asyncio 패키지를 도입했습니다. 여러 차례의 업데이트를 통해 asyncio API는 매우 우수한 성능을 보였고, 멀티스레드 버전보다 동시 작업의 성능이 크게 향상되었습니다. 그нако, 개발자들은 as ...

5월 22일 14:07에 게시됨

Python asyncio: 비동기 환경에서 블로킹 작업 실행

비동기 프로그래밍 환경, 특히 asyncio를 사용할 때 블로킹(blocking) 작업은 주의해야 할 대상입니다. 이벤트 루프가 하나의 스레드에서 실행되는 asyncio에서는 블로킹 작업이 발생하면 해당 스레드가 멈추어 다른 모든 비동기 작업(코루틴)의 실행을 방해하게 됩니다. 이는 CPU 집약적인 계산, 파일 입출력과 같이 시간이 오래 걸리는 작업, 또는 asyncio를 지원하지 ...

5월 20일 22:21에 게시됨