Home
SR's Dev-Log
Cancel

[Python] asyncio 파헤치기 - ③ 동시성이 달성되지 않는 상황

본문은 “Python Concurrency with Asyncio”를 읽고 재구성한 글임을 밝힙니다. 이번 포스팅에서는 실제로 asyncio를 사용하는 상황을 연출하면서 주의해야 할 점에 대해 알아보도록 하겠다. 1. 실습 준비 실습을 진행하기 전, 코루틴의 실행 시간을 측정하기 위한 데코레이터를 작성하자. # util/asyn...

[Python] asyncio 파헤치기 - ② 코루틴, 태스크, 퓨처, Awaitable

본문은 “Python Concurrency with Asyncio”를 읽고 재구성한 글임을 밝힙니다. 이전 포스팅에서는 asyncio가 non-blocking I/O와 이벤트 루프를 통해 하나의 쓰레드에서 동시성을 달성하는 원리를 다루었다. 본 포스팅에서는 asyncio를 사용하여 하나의 쓰레드에서 동시성(single-threaded c...

[Python] asyncio 파헤치기 - ① 배경 지식 정리

본문은 “Python Concurrency with Asyncio”를 읽고 재구성한 글임을 밝힙니다. 파이썬 3.4에서부터는 asyncio 라이브러리를 통해 동시성(concurrency)을 지원한다. 본 포스팅에서는 asyncio에 대해 자세히 알아보기 앞서, 관련 배경 지식들을 쭉 나열하며 정리해보도록 하겠다. 1. I/O-Bou...

[Python] pyproject.toml 파일의 역할 (+ poetry, 파이썬 패키징)

의존성 관리를 위해 poetry를 사용하면 pyproject.toml 파일이 생성된다. 하지만 pyproject.toml 파일의 이름만 봤을 때는 poetry에 한정해서만 사용될 것 같지는 않다. 그렇다면 pyproject.toml의 파일의 본래 용도는 무엇인지, 어떻게 사용 가능한지에 대해 알아보자! 파이썬 패키징 우선, 파이썬 패키징이 ...

[Python] 클래식 코루틴(Classic Coroutine)

1. 코루틴(Coroutine) 파이썬에서 tuple 인스턴스는 다음과 같이 두 가지로 사용될 수 있다. 레코드 (record) 아이템의 개수가 정해져있으며, 각 아이템은 다른 타입을 가질 수 있다. 타입 힌트 예시: city: tuple[str, str, int] 불변 리스트 (immutabl...

[Python] 동시성(Concurrency): 쓰레드, 프로세스, 코루틴 (+ Spinner 예제)

1. 동시성(Concurrency) vs. 병렬성(Parallelism) 동시성과 병렬성의 차이점을 표로 정리하면 다음과 같다. 구분 초점 무엇에 관한 것인지 동시성 (concurrency) “dealing” with lots of things at ...

[Python] 파이썬은 왜 느릴까?

본 포스팅의 내용은 파이썬의 공식 구현체인 CPython을 기준으로 작성되었음을 밝힙니다. 파이썬을 접해봤다면 “파이썬은 느리다”는 말을 들어본 경험이 있을 것이다. 도대체 파이썬은 왜 느린 것일까? 그리고 느림에도 불구하고 파이썬이 널리 사용되는 이유는 무엇일까? 파이썬이 느린 이유 고급 언어이기 때문이다. ...

토익 스피킹 갱신 후기 및 실전 압축 꿀팁 (기록용)

2024년 1월이 되었다. 그 말인 즉슨, 2022년도 1월에 봐둔 토익 스피킹이 만료된다는 것…! 외국어 공부는 재미로 하면 즐거운데 시험을 위해서 하려면 고통스럽다 😵‍💫 이번에는 너무 하기 싫어서 미루고 미루다가 불현듯 더 이상 미루면 평생 안 할 것 같다는 생각이 들어 일주일 뒤 시험을 먼저 신청해두고, 2년 전에 기록해두었던 토익 스피킹...

[Python] GIL(Global Interpreter Lock, 전역 인터프리터 락)

본 포스팅의 내용은 파이썬의 공식 구현체인 CPython을 기준으로 작성되었음을 밝힙니다. “파이썬이 왜 느린가?”를 논할 때 항상 등장하는 단어가 있다. 그것은 바로 흔히 GIL이라고 부르는 전역 인터프리터 락(Global Interpreter Lock)이다. 이러한 GIL은 무엇이며 어떻게 동작하는지, 그리고 왜 파이썬에 도입되었고 ...

[OOP] DI(Dependency Injection, 의존성 주입)

본문은 “개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴”(최범균 저)을 읽고 정리한 내용입니다. 로버트 C 마틴은 소프트웨어를 다음의 두 영역으로 구분한다. 어플리케이션 영역: 고수준 정책 및 저수준 구현을 포함한다. 메인 영역: 어플리케이션이 동작하도록 각 객체들을 연결해준다. 이때, 메인 영역에서 객체를 연결하기 ...