들어가기 전 이 글은 파이썬 비동기 라이브러리 asyncio를 공부하며 작성한 글입니다. 3.7.0 이터레이터 비동기 이터레이터를 시작하기 전에 이터레이터가 무엇인지를 간략히 살펴보고자 한다. 파이썬에서는 다음이 구현된 녀석을 이터레이터라고 한다. __iter__() 매직 메서드가 구현됨. __next__() 매직 메서드가 구현됨 위 두 개의 메서드가 구현되었다면, 그 클래스는 이터레이터가 된다. 그리고 이터레이터는 for 문 같은 곳에서 자유롭게 iterate 할 수 있게 된다. 아래 코드로 예를 들 수 있다. class A: def __init__(self): self.x = -1 def __iter__(self): self.x = 0 return self def __next__(self): if s..
들어가기 전 이 글은 파이썬 비동기 라이브러리 asyncio 책을 공부하며 작성한 글입니다. 3.6 비동기 컨텍스트 관리자들 : async with 네트워크 연결 같은 네트워크 자원의 생명주기를 적절한 범위 내에서 관리 할 때는 AsyncContextManager를 사용하면 편리하다고 한다. 비동기 컨텍스트 매니저는 특정한 자원의 생명주기를 관리해주는 녀석으로 보면 된다. 기본적인 개념은 __acenter()__, __aexit()__ 메서드가 구현된 클래스이며 with절이 시작할 때 __acenter()__가 호출, with절이 끝날 때 __aexit()__가 호출된다. 3.6.1 Class를 이용한 비동기 컨텍스트 매니저 먼저 AsyncContextManager의 내부 동작은 메서드를 호출하면서 이루..
들어가기 전 이 글은 파이썬 비동기 라이브러리 asyncio 3장을 공부하며 작성한 글입니다. 3.1 퀵 스타트 파이썬 asyncio의 주요 컨트리뷰터 중 하나인 유리 셀리바노프는 다음 이야기를 남겼다. Asyncio는 일곱 가지 기능만 알면 충분하다. (일반적 용도로 가정할 때) asyncio는 많은 기능을 제공하지만 이 기능은 두 가지 사람을 대상으로 각각 만들어졌다고 볼 수 있다. 하나는 asyncio 프레임워크를 개발하는 개발자 관점, 또 다른 하나는 asyncio를 사용하는 개발자 관점이다. 일반적인 용도는 asyncio를 사용하는 최종 사용자 관점을 의미한다. 따라서 7가지 기능 정도만 정확하게 알면 asyncio를 사용할 수 있다. Asyncio를 사용한 Hello World import a..
자바 Primitive Type / Reference Type 데이터 타입은 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려준다. 자바에는 크게 Primitive Type(기본형 타입)과 Reference Type(참조형 타입)이 존재한다. 그렇다면 각 타입은 어떤 차이점을 가지고 있을까? 기본형 타입(Primitive Type) 기본형 타입은 기본값을 가지고 있다. 기본값이 존재하기 때문에 Null이 존재하지 않는다. 기본형 타입은 8가지가 존재한다. 기본형 타입은 실제 값을 스택(Stack) 메모리에 저장한다. 변수의 선언과 동시에 메모리에 생성됨. 컴파일 시점에 담을 수 없는 값을 담으려 하는 경우 컴파일 에러가 발생한다. Null을 넣을 수 없기 때문에 ..
파이썬 : asyncio를 이용한 비동기 프로그래밍의 이해 이번 포스팅에서는 파이썬에서 비동기 프로그래밍을 위해 주로 사용하는 asyncio에 대한 부분을 다뤄보고자 한다. 파이썬 2에서는 적절한 비동기 프로그래밍이 지원되지 않아 gevent 같은 라이브러리를 이용해 비동기 프로그래밍을 했던 것으로 알고 있다. 그렇지만 파이썬 3에서는 제네레이터를 기반으로 한 코루틴이 도입되면서 비동기 프로그래밍을 할 수 있게 되었다. 파이썬은 asyncio 라이브러리를 이용해서 보다 손쉽게 코루틴을 이용해 비동기 프로그래밍을 할 수 있도록 한다. 이번 포스팅에서는 주요하게 사용하는 메서드와 동작 방식이 어떻게 되는지를 살펴보고자 한다. 다른 블로그 글을 공부하고 내부 코드를 이해하며 작성한 글이라 틀린 부분이 존재할 ..