Re:제로부터 시작하는 갓생
[TIL.v1] 25/04/09 본문
< TIL 반드시 들어가야 할 내용 >
1. 문제: 어떤 문제가 있었는지
2. 시도: 내가 시도해 본 것들 (자세히 쓰기)
3. 해결: 어떻게 해결했는지
4. 배움: 뭘 새롭게 알았는지 (자세히 쓰기)

계속 컴퓨터 화면 속 코드를 보고 있으니... 다크모드인데도 눈이 아파요...(충혈)
# 1.
출근한 뒤 오늘 하루를 돌아보자
* 오전
API 요청부터 결과 다운로드까지 속도향상을 위한 코드 디벨롭-> 코드 리뷰를 위한 내부 회의..
* 오후
회의에서 나왔던 알아야 하는 내용에 대해 공부-> 오전에 진행했던 코드 디벨롭 추가 진행-> 일단 코드 작업
계획했지만 오늘 하지 못한 일
속도 개선을 위한 코드 작업-> 진행 중...
Github Full request 작업진행-> 마음의 짐이 될게~
Docker 작업 후 배포 준비-> 손도 못 댈게~
내일 해야 할 일
속도 개선 코드 이제는 손 떼자...하루에 100초 단축한 것으로 일단 만족...시간 나면 추가 디벨롭...
Github Full request
도커 작업 후 솔루션 배포 진행 준비
이번 주에 확인해야 할 사항
3/4 | * 디지털 마케팅이란 무엇인가? * 무슨 직종인가? * 광고 마케팅이란 무엇인가? * 어떤 종류가 있는가? * 메타 API |
3/5 | * 크롤링 공부 * 유튜브 playwright python 공부, 구글링 등 |
3/10 | * API 읽는 법과 필요내용 찾는 법 |
3/14 | * API(REST, RESTFUL, FAST) |
3/17 | * Python 공부 꾸준히.... * 솔루션 개발요청이 들어올 때 어떤 문서를 보고 지표를 어떻게 써야하는지 생각 |
4/2 |
배운 점
* Rate limit (속도 제한)
정의: API 요청, 네트워크 작업을 특정 시간 동안 제한해 시스템 과부하를 방지하고 안정성을 유지하기 위한 기술
요소
1) 요청 수 제한: 일정 시간당 처리 가능한 요청 수를 설정
2) 응답 처리: 과도한 요청이 발생하면 제한 초과 메세지를 반환
3) 재시도 전략: 제한 시간 이후 요청을 재시도하도록 구현
예시
import time
def rate_limited_function():
for i in range(5):
print("작업 실행:", i)
time.sleep(2) # 2초 간격으로 실행하여 속도 제한 유지
* time sleep()
정의: Python의 표준 라이브러리로 실행을 일시정지할 수 있음. 단위는 초(seconds)
활용
속도 제한(rate limit) 구현
특정 시간 간격으로 작업 실행
시간 기반 테스트
예시
import time
print("3초 대기 중...")
time.sleep(3) # 3초 동안 실행 정지
print("완료!")
* Pandas 작업
정의: 데이터 분석과 처리를 위한 파이썬 라이브러리
주요 작업
1) 데이터 읽기 및 쓰기
import pandas as pd
df = pd.read_csv('data.csv') # CSV 파일 읽기
df.to_excel('data.xlsx', index=False) # Excel 파일 쓰기
2) 데이터 필터링
filtered = df[df['나이'] > 25] # 나이가 25보다 큰 데이터만 추출
3) 병합 및 그룹화
merged = pd.merge(df1, df2, on='key') # 두 데이터 병합
grouped = df.groupby('컬럼명').sum() # 그룹화 후 합계 계산
* await-> async 중요 요소
특징: Python에서 async, await는 비동기 프로그래밍을 구현하기 위한 핵심 요소
개념
async def: 비동기 함수 정의
await: 비동기 작업 대기
특징
비동기 작업을 통해 시간이 오래 걸리는 작업(I/O 요청)을 병렬적으로 실행할 수 있음
CPU 바운드 작업에는 적합하지 않음
예시: 비동기 작업
import asyncio
async def fetch_data():
print("데이터 가져오는 중...")
await asyncio.sleep(2) # 2초 비동기 대기
print("데이터 가져오기 완료!")
return "데이터"
async def main():
result = await fetch_data()
print(result)
asyncio.run(main()) # 메인 비동기 함수 실행
* 디버거 도구(tool)
특징: 코드 실행 상태를 분석하고 오류를 추적하기 위한 도구
대표적인 디버거
1) pdb: Python 표준 디버거. 터미널에서 간단히 사용
2) IDE 디버거: PyCharm, VSCode 등에서 제공하는 GUI 기반 디버거
활용
1) 코드 흐름 추적
2) 변수 값 실시간 확인
3) 특정 코드 라인에서 실행 정지하여 문제 해결
예시: pdb
import pdb
def example_function(a, b):
pdb.set_trace() # 디버깅 중단점 설정
return a + b
result = example_function(2, 3)
print(result)
* Async (비동기)
정의: 코드가 차례로 실행되지 않음, 작업이 완료될 때까지 기다리지 않고 다른 작업을 진행하는 방식
특징
async: 비동기 함수 정의
await: 비동기 작업 완료 대기
예시
import asyncio
async def example():
print("시작")
await asyncio.sleep(1) # 비동기적으로 1초 대기
print("끝")
asyncio.run(example())
* 동기 vs 비동기 함수
-> 내일 기재...
* Request vs Httpx 함수
-> 내일 기재...
* Bottleneck 병목 지점
정의: 시스템 or 프로세스에서 성능을 제한하는 가장 느린 부분
예시: DB 읽기, 쓰기 속도가 애플리케이션의 전체 처리 속도를 제한한다면? 데이터베이스가 병목지점
해결방법: 프로파일링 도구를 사용해 병목구간 식별 후 병렬 처리, 캐싱, 하드웨어 업그레이드를 통해 개선 가능
* Python GIL(Global Interpreter Lock)
정의: Python 인터프리터가 동시에 하나의 스레드만 실행하도록 제한하는 메커니즘
영향
다중코어 CPU환경에서 성능 저하를 유발
멀티프로세싱( multiprocessing)으로 대체 가능
* Thread (스레드) vs Process (프로세스)
1) 스레드: 같은 메모리 공간을 공유하며 실행. 메모리 효율적, GIL 제한
2) 프로세스: 독립된 메모리 공간 사용. 오버헤드가 크지만 병렬 처리 가능
예시
from multiprocessing import Process
def worker():
print("프로세스 작업 실행")
p = Process(target=worker)
p.start()
p.join()
* logging (로깅)
특징: 시스템 상태를 기록하고 디버깅, 운영 시 필요한 정보를 추적
기본 설정
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("디버깅 정보")
logging.error("에러 발생")
* Sentry
정의: 애플리케이션 오류 및 성능 문제를 모니터링하는 서비스
특징: 실시간 오류 추적, Slack 등과 통합 가능
예시
# pip install sentry-sdk
import sentry_sdk
sentry_sdk.init(dsn="YOUR_DSN_URL")
* CORS 미들웨어
정의: 브라우저가 교차 출처 요청(ex. 다른 도메인 서버 요청)을 허용 or 차단하도록 제어
예시: Python FastAPI
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 모든 도메인 허용
allow_methods=["*"], # 모든 HTTP 메서드 허용
)
기타
* 15조원과 함께 zep 구경한다고 이것저것 해봤는데 시간 순삭 잼
탈출도 하고 스피닝도 타고 헬스도 했다ㅋㅋㅋ온라인으로~



맵 중에 학교 추리게임도 있길래 얼라들이 하는 건 줄 알고 만만하게 보고 금방 끝나겠지 싶어서 시작했다가
그 누구도 풀지 못한 채 2시간이 지났다....^^... 시간 살살 녹는다...


'Daily > TIL' 카테고리의 다른 글
[TIL.v1] 25/04/15 (0) | 2025.04.15 |
---|---|
[TIL.v1] 25/04/14 (0) | 2025.04.14 |
[TIL.v1] 25/04/03 Docker가 나를 힘들게해 (0) | 2025.04.04 |
[TIL.v1] 25/04/02 (1) | 2025.04.02 |
[TIL.v1] 25/04/01 (0) | 2025.04.01 |