[python] 파이썬 파일 I/O의 성능 향상 기법

소개

파이썬은 강력한 파일 입출력 기능을 제공하여 데이터를 읽고 쓸 수 있습니다. 하지만 대용량 파일을 다룰 때 성능이 저하될 수 있습니다. 이러한 상황에서 파일 I/O의 성능을 향상시키는 몇 가지 기법을 알아보겠습니다.

1. 버퍼링

파이썬의 입출력은 기본적으로 버퍼링되어 있습니다. 하지만 때때로 버퍼 크기를 증가시켜 파일 I/O의 성능을 향상시킬 수 있습니다. open 함수를 사용할 때 buffering 인자를 조절하여 적절한 버퍼 크기를 설정할 수 있습니다.

file = open("example.txt", "r", buffering=1024000)  # 1MB 버퍼 사용

2. 바이너리 모드

텍스트 모드보다 바이너리 모드를 사용하는 것이 더 빠를 수 있습니다. 특히 대용량 파일을 다룰 때 이점이 있습니다. 따라서 텍스트가 아닌 데이터를 다룰 때는 바이너리 모드를 고려해보세요.

file = open("data.bin", "rb")  # 읽기용으로 바이너리 모드로 파일 열기

3. 메모리 매핑

매핑 파일 I/O를 사용하면 파일을 메모리에 매핑하여 읽거나 쓸 수 있습니다. 이를 통해 파일의 내용을 직접 읽고 쓸 수 있으며 파일을 읽을 때 발생하는 오버헤드를 줄일 수 있습니다.

import mmap

file = open("example.txt", "r")
mmapped_file = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
data = mmapped_file.read(100)  # 처음 100바이트 읽기
mmapped_file.close()
file.close()

결론

파이썬 파일 I/O의 성능을 향상시키는 다양한 기법들을 활용하면 대용량 파일을 다룰 때 발생하는 성능 문제를 해결할 수 있습니다. 앞으로 파일 I/O를 다뤄야 할 때 이러한 기법들을 고려해보세요.

해당 내용은 파이썬 공식 문서Real Python을 참고하여 작성되었습니다.