2015-02-06 27 views
0

我使用的是Ubuntu 64bit 12.04。我的机器有64个RAM。我正在运行一个脚本,我必须将〜9gig的数据存储到字典中。当内存不足时,python内存异常

这是一个简单的字典,其中键是30个字符,值只是一个整数。

但是,该脚本在大约58%的内存使用率时抛出内存异常。这里发生了什么?字典大小是否有最大限制?

+0

64演唱会?这是过分的...但仍然,内存使用看起来很奇怪。有没有其他的东西在运行? – Zizouz212 2015-02-06 00:49:07

+0

你在做什么手术吗?你是否剥离了用于存储这些数据的代码? – taesu 2015-02-06 00:49:28

+0

@ Zizou212 我从事基因组学研究。它需要很多内存。还有别的东西在运行,但它只有4%的内存。 – daemonk 2015-02-06 00:50:53

回答

1

我不认为有一个最大值限制了Python中字典的大小。假设您的脚本在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 

通过这种方式,至少你可以确保它是你的脚本吃了内存。