728x90
반응형
SMALL
대용량 파일을 읽기 위해서는 다양한 방법들이 있는데, 그중에서 메모리 매핑을 통하여 빠르게 접급하는 방법에 대해서 알아 보자.
먼저 예제 코드는 아래와 같다.
import mmap
def process(data):
# 데이터 처리 로직
pass
with open('large_file.txt', 'r+b') as f:
mm = mmap.mmap(f.fileno(), 0)
while True:
line = mm.readline()
if not line:
break
# 각 줄에 대한 처리
process(line)
mm.close()
첫줄에 mmap 를 사용할 것이라고 선언(import) 을 하는데 mmap 는 메모리 매핑(memory mapping)을 수행하는 모듈입니다. 장점은 메모리에 매핑된 데이터를 디스크에서 직접 읽어오기 때문에 디스크에서 메모리로 데이터 복사가 없습니다. 그러므로 대용량 처리를 가능하게 합니다.
그리고 open() 함수를 이용하여 파일 열기를 수행합니다.
다음으로 mmap()와 fileno() 함수를 이용하는데 이는 파일이 가지고 있는 식별자 즉 id(또는 파일 디스크립터)를 메모리에 연결시킵니다.
** 디스크립터(식별자 또는 id)는 파일이 열 때 운영체제로 부터 자동으로 할당되어짐
이제 디스크에 저장된 파일과 메모리 연결이 완료되었으니 readline()을 이용하여 한줄씩 접근하고 처리합니다.
728x90
반응형
LIST