안녕하세요. Teus입니다.이번 포스팅은, what's new in python3.13 에서 새롭게 소개된 실험적 기능 중 하나인python jit compiler를 빌드하는 방법을 소개하고, 간단하게 일반 python과의 성능 차이에 대해서 알아봅니다.0. JITPEP 744 – JIT CompilationGIL때문에 관심을 전혀 받지 못하고 있었지만,Python자체적으로 JIT(Just In Time) Compiler가 준비되고 있었고해당 기능이 이제 Experimental Feature로 사용이 가능하게 되었습니다.Python의 Jit같은 경우, “copy-and-patch” 기술을 사용해서 High-level로 작성된 코드의 byte code 최적화를 가능하게 해줍니다.혹시 copy-and-pat..
안녕하세요. Teus입니다.이번 포스팅은 Python 3.13버전 릴리즈와 함께 공개된Free-Threaded CPython을 빌드하고, 테스트 해본 내용을 담아봅니다.0. GILGIL은 예전부터 제 포스팅에 자주 등장했지만Python의 GC를 구현하기 위해서 한순간에는 하나의 Thread만 실행 가능하게 만드는 Lock의 일종 입니다.그래서, Python을 사용할 경우 Thread를 썼지만 다수의 코어를 활용하지 못하는 속상한 상황이 벌어집니다.(멀티코어를 동시에 사용하지 못하는 거세당한 python의 멀티Thread🥺)하지만 python.org의 discussion을 통해서 GIL-free상태의 Python의 개발 방향에 대해서 논의된 적이 있습니다.그리고, 로드맵에 있던 대로 기본 모드가 아니라별..
안녕하세요. Teus입니다.이번 포스팅은 Python의 GIL 관련 Python.org내부 discussion 번역& 정리 입니다.2023년 글이라, 현재는 어떻게 진행되고있는지는 불확실 하지만대략 2023년에 Python의 GIL관련 핵심개발자(Core Dev)의 생각을 옅볼 수 있습니다.Python.org GIL토론글0. 요약.CPython의 GIL을 제거하는 빌드를 만들고, 이를 커뮤니티와 싸바싸바 잘 하여서 제거 해보겠다는 마스터 플랜 입니다.중간에 Python2 -> 3의 이야기가 있는데, Python3으로 넘어가는 과정에서 하위호환을 챙기지 못한 부분이 두고두고 문제가 되었던 것으로 판단됩니다.Python4가 아닌, Python3에서 GIL관련된 문제를 해결해 보겠다는 장기적인 로드맵을 확인해..
안녕하세요. 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..
- Total
- Today
- Yesterday
- AVX
- 컴퓨터그래픽스
- Python
- 코딩테스트
- 프로그래머스
- 사칙연산
- 자료구조
- 이분탐색
- git
- 동적계획법
- Search알고리즘
- GDC
- C++
- Greedy알고리즘
- prime number
- Sort알고리즘
- 알고리즘
- hash
- 병렬처리
- stack
- 분할정복
- SIMD
- 완전탐색 알고리즘
- heap
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |