[Python] 배열을 1000개 단위로 나누어 처리하는 방법

2025. 5. 18. 19:31·개발 (Development)/Python

대량의 데이터를 처리할 때, 전체를 한 번에 다루기보다는 일정 단위로 나누어 처리하는 방식이 안정성과 효율성 측면에서 매우 중요합니다. 특히 데이터베이스 저장, 외부 API 호출, 파일 저장 등에서 과부하를 방지하기 위해 자주 사용됩니다. 이번 글에서는 Python에서 배열을 1000개 단위로 잘라 반복 처리하는 실용적인 코드를 소개합니다.

문제 상황

예를 들어, 수만 건의 데이터를 다룰 때 이를 한 번에 처리하려 하면 다음과 같은 문제가 발생할 수 있습니다.

  • 데이터 크기가 너무 커서 메모리 부담이 큼
  • API 요청 횟수 또는 처리 용량에 제한이 있음
  • 에러 발생 시 어느 구간에서 문제가 생겼는지 파악하기 어려움

이런 상황에서 데이터를 1000개 단위로 나누어 처리하면 안정성, 추적 가능성, 오류 회피에 큰 도움이 됩니다.

해결 방법

Python에서는 range()와 슬라이싱을 조합해 간단히 구현할 수 있습니다.

data = [...]  # 처리할 데이터 리스트

for i in range(0, len(data), 1000):
    chunk = data[i:i+1000]  # 1000개씩 나누기
    print(f"{i} ~ {i+len(chunk)-1}번째 데이터 처리 중")
    # 여기에 실제 처리 로직을 작성
    # 예: process_data(chunk)

코드 설명

  • range(0, len(data), 1000)
    → 0부터 데이터 길이까지 1000씩 증가하는 반복 범위를 생성합니다. 예를 들어 0, 1000, 2000처럼 반복됩니다.
  • data[i:i+1000]
    → 리스트를 슬라이싱해서 1000개씩 잘라냅니다. 마지막 구간은 남은 데이터 수만큼만 슬라이싱되므로 별도 처리 없이도 안전합니다.
  • print(f"{i} ~ {i+len(chunk)-1}번째 데이터 처리 중")
    → 현재 어떤 범위의 데이터를 처리 중인지 로그로 남기면 디버깅 및 진행 상황 파악에 유용합니다.

실무에서의 활용 예시

  • DB에 배치 단위로 Insert 처리
  • API 요청 시 rate limit을 고려한 처리
  • 대용량 데이터를 파일로 나눠 저장
  • 진행 로그 추적 및 오류 위치 파악

유의할 점

  • 슬라이싱 시 i+1000이 리스트 길이를 넘어도 에러가 나지 않고 자동으로 범위 내까지만 처리됩니다.
  • 인덱스 범위 출력 시 i+len(chunk)-1처럼 슬라이싱된 실제 길이를 기반으로 계산해야 마지막 인덱스를 정확히 알 수 있습니다.
  • 반복 중 데이터를 바로 변경하거나 삭제하는 경우에는 copy()를 사용하거나 원본을 건드리지 않도록 주의해야 합니다.

마무리

이와 같이 range()와 슬라이싱을 함께 사용하면 Python에서 데이터를 일정 단위로 나누어 효율적이고 안전하게 처리할 수 있습니다. 실무 자동화 작업, 대용량 데이터 처리, API 연동 등 다양한 작업에서 활용할 수 있는 유용한 코드 패턴이니 꼭 익혀두시길 추천드립니다.

반응형

'개발 (Development) > Python' 카테고리의 다른 글

[Python] pandas로 DataFrame 비교하여 특정 값 제거하는 방법  (0) 2025.07.20
[Python] JSON 파일을 CSV로 변환  (1) 2025.06.01
[Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법  (0) 2025.05.18
[Python] Pandas DataFrame에서 for문을 이용해 특정 컬럼 값 변경하기  (0) 2025.05.18
[Python] Docker image load  (0) 2025.02.23
'개발 (Development)/Python' 카테고리의 다른 글
  • [Python] pandas로 DataFrame 비교하여 특정 값 제거하는 방법
  • [Python] JSON 파일을 CSV로 변환
  • [Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법
  • [Python] Pandas DataFrame에서 for문을 이용해 특정 컬럼 값 변경하기
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (216)
      • 개발 (Development) (151)
        • Algorithm (1)
        • Angular (1)
        • AWS (4)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (30)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (6)
        • PostgreSQL (37)
        • Python (26)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (10)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (10)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pandas
    오답노트
    백준온라인저지
    DevOps
    python
    MyBatis
    typescript
    AWS
    백준알고리즘
    JSON
    docker
    데이터분석
    PostgreSQL
    Linux
    ADsP
    자바
    timescaledb
    Kafka
    springboot
    deepseek
    리눅스 마스터 2급 2차
    백준
    JPA
    Vue.js
    리눅스 마스터 2급
    백준자바
    Linux master
    java
    javascript
    Kubernetes
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Python] 배열을 1000개 단위로 나누어 처리하는 방법
상단으로

티스토리툴바