파이썬 : asyncio를 이용한 비동기 프로그래밍의 이해 이번 포스팅에서는 파이썬에서 비동기 프로그래밍을 위해 주로 사용하는 asyncio에 대한 부분을 다뤄보고자 한다. 파이썬 2에서는 적절한 비동기 프로그래밍이 지원되지 않아 gevent 같은 라이브러리를 이용해 비동기 프로그래밍을 했던 것으로 알고 있다. 그렇지만 파이썬 3에서는 제네레이터를 기반으로 한 코루틴이 도입되면서 비동기 프로그래밍을 할 수 있게 되었다. 파이썬은 asyncio 라이브러리를 이용해서 보다 손쉽게 코루틴을 이용해 비동기 프로그래밍을 할 수 있도록 한다. 이번 포스팅에서는 주요하게 사용하는 메서드와 동작 방식이 어떻게 되는지를 살펴보고자 한다. 다른 블로그 글을 공부하고 내부 코드를 이해하며 작성한 글이라 틀린 부분이 존재할 ..
Hash Key 생성 기본적으로 파이썬은 Hash를 이용한 딕셔너리라는 자료구조를 제공한다. 이 때, 단순히 하나의 값으로 Hash를 생성할 때는 크게 생각을 하지 않아도 된다. 이를 테면 "AB" 같은 것들은 훌륭하게 Hash Key로 사용할 수 있다. 그런데 Key로 사용되어야 할 값이 복잡해지면 고민이 생기기 시작한다. 어떻게 키를 만들지? 이런 저런 방법이 있을 수 있는데, 나는 이전에는 주어진 문자열을 join 메서드로 붙인 값을 key로 사용해서 값을 넣어주곤 했다. 그런데 Hash에 사용할 Key를 생성할 때, 좀 더 효율적으로 사용할 수 있는 방법이 있다. 바로 Hornor's Method다. Hornor's Method 활용 한 가지 예를 들어보자. 알파벳 소문자(a-z)만 등장하는 문자..
Python Deque 정렬하기 Python의 Deque은 정렬하는 방법이 따로 없다. que를 정렬하면 리스트가 되는데, 이 리스트를 다시 deque 생성자에 넣어주는 방식으로 정렬을 하는 방법은 존재한다. Deque 뒤집기 q = deque() q.reverse() Deque은 정렬은 할 수 없으나, 기존 Deque을 뒤집는 방법은 존재한다. Deque Rotate 하기 Deque은 Rotate 하는 함수가 있다. 사람이 직접 구현하면 pop, append를 이용해야하는데, 그걸 명령어 하나로 몇칸씩 움직일지를 알려주기 때문에 좀 더 편리하게 사용할 수 있다. a = [1,2,3,4,5] q = deque(a) q.rotate(2) input : 1,2,3,4,5 output : 4,5,1,2,3 양..
Python Key 그동안 가내수공업으로 필요한 함수들을 구현해왔었다. 그렇지만 파이썬의 Key 파라메터와 함께 내장모듈을 이용하면 좀 더 편리하게 코드를 구현할 수 있고, 덕분에 가독성이 향상되고 코드의 크기도 줄어든다. 따라서 안 쓸 이유가 없는데, 그동안 제대로 정리된 적이 없었기 때문에 선뜻 사용하지는 못하고 있었다. 이번에 살짝 정리를 해보려고 한다. min, max 함수에 사용하기 min, max 함수를 살펴보면 옵션에 Key가 있는 것을 확인할 수 있다. min, max 함수를 이용해 값을 구할 때 key에 min, max를 구할 조건을 지정해준다고 이해를 해주면 될 것 같다. a = np.random.randint(0,100,50) print(a) Numpy로 Random 값을 만들고 출력..
문자열 Concat 시간복잡도 확인하기 String += String vs .join