안녕하세요. Teus입니다.이번 포스팅은 Python의 Multiprocessing을 사용하는 과정에서 발생하는 문제점들을 탐구하는 포스팅 입니다.0. Python의 Multiprocessing예전부터 이야기 하지만, Python의 GIL 때문에, Python에서 Multicore의 이점을 가져가기 위해선 MultiThreading이 아니라 Multiprocessing이 필요합니다.이런 Prcoess끼리는 서로 Data와 Heap, Stack을 공유하지 않기 때문에Process를 생성하고, 해당 Process가 새로운 작업을 시작하는데는 Thread를 사용하는것 보다 많은 시간이 요구됩니다.import multiprocessing as mpimport threadingimport timeitdef foo..
안녕하세요. Teus입니다.이번 포스팅은 asyncio의 저수준 api를 사용해서어떻게 바닥부터 비동기 함수를 만드는지에 대해서 asyncio.sleep 조교와 함께 알아보겠습니다.0. asyncio.sleeppython에서 가장 처음 asyncio를 접할 경우아마도 십중 팔구 asyncio.sleep을 통해서 async를 쓰면 좋다고 전도받습니다.#https://docs.python.org/3/library/asyncio-runner.htmlasync def main(): await asyncio.sleep(1) print('hello')asyncio.run(main())근데 이상하게도 아래처럼 만든 함수를 사용하면 async의 힘을 사용할 수가 없습니다async def my_async_sl..
안녕하세요.대 AI시대에 python한 우물만을 파고있는 Teus입니다이번 포스팅은, Python의 비동기 라이브러리인 aiofiles를 활용해서비동기로 Parquet파일을 읽어들이는 방법에 대해서 다룹니다.aiofiles 패키지를 이용해서 Bytes를 비동기로 읽어오고, 해당 Bytes를 활용해서 Parquet파일을 만들어 볼 예정입니다.0. Parquet파일?Parquet파일은 Data Engineering 분야에서 효율적으로 빅데이터를 저장하기 위해서 만들어진 확장자 포맷 입니다.기존에 CSV를 대체할 목적으로 나왔고, 이전에 홍반장님의 포스팅에서도 다룬적이 있습니다.Data Projects 에서 I/O Optimization by 홍반장parquet 파일은 기본적으로 apache에서 제공하는 py..
안녕하세요. Teus입니다. 이번 포스팅은 Flask 2.0에서 지원되는 Async함수에 대해서 이야기 합니다.1. Flask 2.0아마 처음에 Flask의 비동기 함수를 보고 Flask에서 비동기함수라니, 뭔 멍멍이같은 소리여😒 하실 수 있습니다. 하지만, Flask가 2.0으로 버전업이 되면서 Async함수를 쓸 수 있게 되었습니다.Flask Async Official Docs Using async and await — Flask Documentation (2.3.x)Using async and await Changelog Routes, error handlers, before request, after request, and teardown functions can all be coroutine ..
안녕하세요. Teus입니다. 이번 포스팅은 FastAPI에서 기본적으로 사용하는 WebServer인 Uvicorn의 workers가 어떤 의미를 갖는지 알아봅니다. 그리고 일반적으로 알기 어려운 WebServer의 역할을 Python코드를 통해서 알아봅니다.0. Gunicorn일반적으로 Web서버의 구성은 아래처럼 구성 됩니다.client WebServer WebApplicationServer(WAS) DBSpringboot같은 경우 Webserver의 역할을 Tomcat이나 Apache 서버가 해줍니다. 하지만 Python같은 경우 Gunicorn이라는 패키지를 통해서 Client의 Requests를 받고, 이를 WAS(=Django, FastAPI Application)로 넘겨줍니다. 그래서 이..
안녕하세요. Teus입니다. 이번 포스팅은 SIMD(Single Instrunction Multi Data)를 다룹니다. 이번에는 AVX를 Array로 사용하지않고, Pointer를 사용하는 패턴을 보도록 하겠습니다.1. _aligned_malloc_aligned_malloc(size_t data_size, size_t alignemnet_size)aligned_malloc은 기본적인 malloc과 다르게 alignement_size 만큼 Data끼리의 간격을 보장해주는 Malloc을 의미합니다. 일반적으로 16byte, 32byte씩 Data를 띄워주면 SIMD의 Data처리 효율이 증가한다고 알려져 있습니다.__m256d* arr1 = (__m256d*)_aligned_malloc(sizeof(dou..
- Total
- Today
- Yesterday
- 완전탐색 알고리즘
- Search알고리즘
- 이분탐색
- heap
- 컴퓨터그래픽스
- Python
- C++
- stack
- 동적계획법
- 병렬처리
- 사칙연산
- git
- prime number
- hash
- AVX
- 알고리즘
- 코딩테스트
- Greedy알고리즘
- GDC
- 프로그래머스
- Sort알고리즘
- 자료구조
- 분할정복
- SIMD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |