2015-02-06 2 views
0

저는 우분투 64 비트 12.04를 사용하고 있습니다. 내 컴퓨터에는 64GB의 RAM이 있습니다. 저는 ~ 9gig의 데이터를 사전에 저장해야하는 스크립트를 실행하고 있습니다.전체 메모리 사용시 파이썬 메모리 예외가 발생했습니다.

키가 30 자이고 값이 정수인 간단한 사전입니다.

그러나 스크립트는 약 58 %의 메모리 사용량으로 메모리 예외를 발생시킵니다. 여기서 무슨 일이 일어나고있는거야? 사전 크기에 최대 한도가 있습니까?

+0

숫양 64 기가? 그건 잔인 해요 ...하지만 여전히 메모리 사용은 이상하게 보입니다. 실행중인 다른 것이있을 수 있습니까? – Zizouz212

+0

어떤 작업을하고 있습니까? 해당 데이터를 저장하기위한 코드 만 삭제 했습니까? – taesu

+0

@ Zizou212 나는 유전체학에서 일하고 있습니다. 그것은 많은 숫양이 필요합니다. 달리기가 있지만 그 숫양의 4 %만이 있습니다. – daemonk

답변

1

파이썬에서 사전 크기를 제한하는 최대 값이 있다고 생각하지 않습니다. Unix에서 스크립트가 실행된다고 가정하면 표준 라이브러리 모듈 resource을 통해 프로세스가 소비 할 수있는 메모리 제한을 늘릴 수 있습니다.

>>> import resource 
>>> resource.setrlimit(resource.RLIMIT_AS, (10**9, 10**9)) 

주기적으로 resource.getrusage() 기능으로 메모리 사용을 확인할 수도 있습니다. 결과 객체에는 ru_maxrss 속성이 있습니다.이 속성은 호출 프로세스의 총 메모리 사용량을 제공합니다.

>>> import resource 
>>> resource.getrusage(resource.RUSAGE_SELF).ru_maxrss 
>>> 20631552 

이렇게하면 적어도 메모리를 먹는 스크립트인지 확인할 수 있습니다.

관련 문제