500MB의 데이터 세트를 가지고 있다면 100MB의 데이터 만 읽으려는 테스트를 수행하고 싶습니다. 이것은 단지 예일뿐입니다. 일반적으로 내 데이터 집합의 크기가 x 인 경우 x/k 양만 읽을 수 있기를 원합니다.파이썬을 사용하여 메모리에 저장되는 데이터의 양을 제한하고 데이터가 메모리에 맞지 않는 경우를 처리하는 방법을 제한 하시겠습니까?
데이터 형식은 numpy 배열입니다. 코드 흐름은 다음과 같습니다.
data = pickle.load(open('test.data', 'rb'))
nrows = data.shape[0]
ncols = data.shape[1]
sketch = np.zeros((k, ncols) #k << n
for item in data:
Do Something
데이터가 메모리에 맞지 않을 때 스트리밍 모델을 시뮬레이트하고 싶습니다. 스트리밍 모델은 데이터를 한 번만 전달할 때 사용됩니다.
파이썬이 메모리에 들어 가지 않을 때 어떻게 데이터 집합을 처리합니까? 예를 들어 숫양이 4GB이고 위의 pickle 데이터가 40GB라면 어떤 일이 발생합니까?
numpy에는 피클을 사용하지 마십시오. hdf5를 사용해야합니다. – HYRY
코어 메모리에 맞지 않는 것을 unpickle하려고하면 파이썬은'MemoryError' 예외를 던집니다. [메모리 매핑 배열] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html)은 RAM에 맞지 않는 대용량 데이터 집합을 처리하는 데 유용 할 수 있습니다. –