저는 우분투 64 비트 12.04를 사용하고 있습니다. 내 컴퓨터에는 64GB의 RAM이 있습니다. 저는 ~ 9gig의 데이터를 사전에 저장해야하는 스크립트를 실행하고 있습니다.전체 메모리 사용시 파이썬 메모리 예외가 발생했습니다.
키가 30 자이고 값이 정수인 간단한 사전입니다.
그러나 스크립트는 약 58 %의 메모리 사용량으로 메모리 예외를 발생시킵니다. 여기서 무슨 일이 일어나고있는거야? 사전 크기에 최대 한도가 있습니까?
저는 우분투 64 비트 12.04를 사용하고 있습니다. 내 컴퓨터에는 64GB의 RAM이 있습니다. 저는 ~ 9gig의 데이터를 사전에 저장해야하는 스크립트를 실행하고 있습니다.전체 메모리 사용시 파이썬 메모리 예외가 발생했습니다.
키가 30 자이고 값이 정수인 간단한 사전입니다.
그러나 스크립트는 약 58 %의 메모리 사용량으로 메모리 예외를 발생시킵니다. 여기서 무슨 일이 일어나고있는거야? 사전 크기에 최대 한도가 있습니까?
파이썬에서 사전 크기를 제한하는 최대 값이 있다고 생각하지 않습니다. 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
이렇게하면 적어도 메모리를 먹는 스크립트인지 확인할 수 있습니다.
숫양 64 기가? 그건 잔인 해요 ...하지만 여전히 메모리 사용은 이상하게 보입니다. 실행중인 다른 것이있을 수 있습니까? – Zizouz212
어떤 작업을하고 있습니까? 해당 데이터를 저장하기위한 코드 만 삭제 했습니까? – taesu
@ Zizou212 나는 유전체학에서 일하고 있습니다. 그것은 많은 숫양이 필요합니다. 달리기가 있지만 그 숫양의 4 %만이 있습니다. – daemonk