목록Python (3)
이야기박스

들어가기에 앞서 오랜만에 글을 작성하게 되었습니다. 한발 늦은 감이 있지만, 얼마 전까지 ChatGPT로 한참 시끄러웠었죠. 특히 GTP4는 업무에 도움이 될 수준으로 답변을 주곤 했습니다. 그래서 오늘은 openAI에서 제공하는 API로 재미 삼아 예제 프로그램을 만들어보고자 합니다. 오늘 작성된 코드는 Git repo에서도 확인할 수 있습니다. API Key 획득 openAI에 회원 가입을 하여 API key 획득을 해야 합니다. 아쉽게도 2023년 4월 기준으로 gpt3.5 까지만 API로 지원을 하고 있습니다. gpt4 API는 별도 구매가 필요한 것 같아요. (https://openai.com/pricing) OpenAI 사이트에서 개인 정보 수정에 들어가면, 이런식으로 API Key 생성해 두..

# 개요 Python3에서의 GIL(Global Interpreter Lock)이란 어떤 것인지, 그리고 이러한 환경에서 Thread, Process는 어떻게 사용해야 할지 이야기해보도록 하겠습니다. # Process & Thread [POSIX; 프로세스와 스레드]에 작성된 문서를 바탕으로 정리를 해보았습니다. Python Thread 영역은 CPython과 밀접한 연관이 있고, 프로세스와 스레드의 개념을 잘 설명해주어서 복습한다는 느낌으로 읽어보았습니다. `프로세스`란? 컴퓨터에서 연속적으로 실행되고 있는 프로그램, 즉 작업(Task)들을 일컷는 말. `스레드`란? 프로세스 내부에 실행되는 작은 작업 단위. 스레드는 프로세스의 `code`, `data`, `heap` 영역을 공유하고, `stack` ..

대용량 파일을 분할하려고 하는데, 통으로 읽어서 하려다 자꾸 OOM이 나서 스트림 처리 분할 로직을 만들어 봤습니다. 매번 자바만 하다가 파이썬을 하니 굉장히 재밌더라고요. 대학생 때로 돌아간 것 같고.. # 정책 스택 드라이버 코드를 참고해서 만들었고, 기본 동작 방식은 다음과 같습니다. 1. `block_size` 크기만큼 파일을 읽습니다. --> `block` 2. `block`에서 `marker`가 나올 때마다 해당 값들을 `rows`에 넣습니다. 3. `rows`가 특정 크기 이상되면 파일을 씁니다. # 코드 def split_file(): marker = '{delimiter}' partition_no = 0 max_row_cnt = 500000 block_size = 8192 encoding..