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
728x90
반응형
SMALL

아래 파일(Animated GIF Frame Extractor v1.1.exe)을 다운로드 받습니다.

(프로그램 실행시 컴퓨터에 따라 필요한 프로그램 설치과정이 나타날 수 있습니다. 시간이 좀 오래걸릴 수 있는데 기다리면 자동 설치 완료됩니다.^^)

 

Animated GIF Frame Extractor v1.1.exe
0.03MB

 

실행시 화면은 다음과 같다.

 

Open 버튼을 클릭 한다.

 

gif 파일을 선택한다.

 

위와 같이 왼쪽에는 프레임 순서 오른쪽에는 각 프레임을 선택하면 해당되는 이미지를 확인할 수 있다.

선택 프레임을 저장(Save current frame) 할 수 있고 모든 프레임(Save all fames) 저장할 수 있다.

 

모든 프레임 저장 버튼 클릭시 아래와 같이 설정 화면이 나타나고

 

폴더 설정 후 OK 를 누르면 아래와 같이 모든 이미지가 저장됨을 확인 할 수 있다.

728x90
반응형
LIST

+ Recent posts