<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Python on HandsLog</title>
    <link>https://blog.jsontapose.com/categories/python/</link>
    <description>Recent content in Python on HandsLog</description>
    <generator>Hugo -- 0.146.0</generator>
    <language>ko-kr</language>
    <lastBuildDate>Tue, 24 Mar 2026 13:29:07 +0000</lastBuildDate>
    <atom:link href="https://blog.jsontapose.com/categories/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>FastAPI 비동기 처리와 이벤트 루프 이해 — uvicorn, uvloop, asyncio, libuv</title>
      <link>https://blog.jsontapose.com/posts/fastapi-async-event-loop-uvicorn-uvloop-asyncio-libuv-32b91a/</link>
      <pubDate>Tue, 24 Mar 2026 13:29:07 +0000</pubDate>
      <guid>https://blog.jsontapose.com/posts/fastapi-async-event-loop-uvicorn-uvloop-asyncio-libuv-32b91a/</guid>
      <description>&lt;h3 id=&#34;개요&#34;&gt;개요&lt;/h3&gt;
&lt;p&gt;FastAPI의 비동기 처리 흐름을 이벤트 루프 관점에서 정리
Node.js의 libuv 기반 모델을 기준선으로, Python의 asyncio와 uvloop, 그리고 Uvicorn이 FastAPI 요청을 어떻게 비동기로 처리하는지 비교
I/O 바운드 중심의 동작 원리와 GIL 제약, 실무에서의 주의점을 함께 정리&lt;/p&gt;
&lt;h3 id=&#34;nodejs-이벤트-루프-요약&#34;&gt;Node.js 이벤트 루프 요약&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;싱글 스레드 논블로킹 모델의 핵심은 이벤트 루프와 비동기 I/O 위임&lt;/li&gt;
&lt;li&gt;Node.js는 C로 구현된 libuv를 통해 커널 비동기 I/O를 활용하거나, 미지원 경우 스레드풀로 오프로드&lt;/li&gt;
&lt;li&gt;기본 스레드풀 크기는 4로 시작, 환경변수로 조정 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;libuv가 커널 비동기 I/O를 직접 쓰는 경우와 아닌 경우의 차이 참고&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python의 Call by Object Reference 정확히 이해하기</title>
      <link>https://blog.jsontapose.com/posts/python-call-by-object-reference-6c66e8/</link>
      <pubDate>Thu, 19 Mar 2026 13:28:18 +0000</pubDate>
      <guid>https://blog.jsontapose.com/posts/python-call-by-object-reference-6c66e8/</guid>
      <description>&lt;h2 id=&#34;개요&#34;&gt;개요&lt;/h2&gt;
&lt;p&gt;파이썬 변수와 함수 인수 전달 방식을 정리함
주요 키워드 세 가지 정리&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;call by value&lt;/li&gt;
&lt;li&gt;call by reference&lt;/li&gt;
&lt;li&gt;call by object reference (aka call by sharing)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;헷갈리는 포인트는 call by reference와 call by object reference의 차이임
파이썬에서 실제로 일어나는 바인딩과 가변성의 조합으로 이해 필요&lt;/p&gt;
&lt;h2 id=&#34;호출-방식-개념-정리&#34;&gt;호출 방식 개념 정리&lt;/h2&gt;
&lt;h3 id=&#34;call-by-value&#34;&gt;Call by Value&lt;/h3&gt;
&lt;p&gt;인수 전달 시 값의 복사 전달
함수 내부에서 인자를 변경해도 호출자 쪽 원본에는 영향 없음&lt;/p&gt;
&lt;h3 id=&#34;call-by-reference&#34;&gt;Call by Reference&lt;/h3&gt;
&lt;p&gt;인수 전달 시 변수 자체를 참조로 전달하는 모델
함수 내부 변경이 호출자 변수에 그대로 반영됨
특정 언어에서만 엄밀히 지원되는 개념이며, C는 포인터를 값으로 전달해 유사 동작을 만들 수 있으나 언어 차원의 call by reference와는 구분 필요
Java는 참조 자체를 값으로 전달하므로 call by reference가 아님에 주의&lt;/p&gt;</description>
    </item>
    <item>
      <title>파이썬 MRO(Method Resolution Order)와 super 동작 원리 정리</title>
      <link>https://blog.jsontapose.com/posts/python-mro-method-resolution-order-and-super-173254/</link>
      <pubDate>Mon, 16 Mar 2026 13:29:29 +0000</pubDate>
      <guid>https://blog.jsontapose.com/posts/python-mro-method-resolution-order-and-super-173254/</guid>
      <description>&lt;h3 id=&#34;개요&#34;&gt;개요&lt;/h3&gt;
&lt;p&gt;파이썬은 다중 상속을 지원하며 동일한 이름의 메소드가 여러 부모에 존재할 때 어떤 구현을 선택할지 결정해야 함
이 결정 규칙이 MRO(Method Resolution Order)로, 클래스 계층 전체에서 메소드를 탐색하는 순서를 정의함
MRO가 없다면 동일 시그니처 메소드가 교차 상속되는 상황에서 해석 모호성, 이른바 death diamond 문제가 발생함&lt;/p&gt;
&lt;h3 id=&#34;핵심-개념&#34;&gt;핵심 개념&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;MRO의 본질은 메소드 탐색 순서의 선형화&lt;/li&gt;
&lt;li&gt;파이썬은 C3 linearization 알고리즘으로 일관된 순서를 계산함&lt;/li&gt;
&lt;li&gt;규칙 요약
&lt;ul&gt;
&lt;li&gt;자식 클래스가 먼저&lt;/li&gt;
&lt;li&gt;왼쪽에서 오른쪽으로 명시한 부모 순서를 존중&lt;/li&gt;
&lt;li&gt;각 부모의 MRO를 안정적으로 병합하여 일관성 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;클래스 속성 &lt;strong&gt;mro&lt;/strong&gt; 또는 클래스 메소드 mro()로 확인 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;동작-원리&#34;&gt;동작 원리&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;탐색 순서 기본 형태
&lt;ul&gt;
&lt;li&gt;자식 클래스 → 명시된 순서의 부모들 → 각 부모의 상위 클래스들 → 최상위 object 순으로 선형화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;C3 linearization은 다음 제약을 동시에 만족하는 유일한 순서를 생성
&lt;ul&gt;
&lt;li&gt;자식은 항상 부모보다 앞선다&lt;/li&gt;
&lt;li&gt;부모 목록의 왼쪽 우선 순서를 보존한다&lt;/li&gt;
&lt;li&gt;부모들의 MRO 순서를 보존한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이 규칙으로 동일 이름 메소드가 다수 존재해도 첫 번째로 만나는 구현이 선택됨&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;사용법과-간단-예시&#34;&gt;사용법과 간단 예시&lt;/h3&gt;
&lt;p&gt;다중 상속에서 실제 탐색 순서를 눈으로 확인하는 것이 가장 빠름&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
