Tau*_*upi 65 python memory limits list
我需要为科学目的生产大型和大型(非常)矩阵(马尔可夫链).我执行微积分,我放入20301元素列表(=我的矩阵的一行).我需要内存中的所有数据继续下一步Markov步骤但我可以将它们存储在别处(例如文件),如果需要的话,即使它会减慢我的马尔可夫链步入.我的电脑(科学实验室):Bi-xenon 6核/ 12threads,12GB内存,操作系统:win64
  Traceback (most recent call last):
  File "my_file.py", line 247, in <module>
    ListTemp.append(calculus)
MemoryError
微积分结果示例:9.233747520008198e-102(是的,超过1/9000)
存储第19766个元素时会引发错误:
ListTemp[19766]
1.4509421012263216e-103
如果我走得更远
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    ListTemp[19767]
IndexError: list index out of range
所以这个列表在19767循环中有一个内存错误.
列表是否有内存限制?它是"按列表限制"还是"按脚本限制全局"?
如何绕过这些限制?任何可能的想法?
使用numpy,python64会有帮助吗?它们的内存限制是多少?其他语言怎么样?
G G*_*III 53
首先,看看 Python数组有多大?和Numpy,长阵列的问题
其次,唯一的实际限制来自您拥有的内存量以及系统如何存储内存引用.没有每个列表限制,因此Python将一直运行到内存不足.两种可能性:
tho*_*mas 26
MemoryError您看到的例外是可用RAM耗尽的直接结果.这可能是由Windows(32位程序)施加的每个程序限制2GB 或计算机上缺少可用RAM引起的.(此链接指向上一个问题).
如果您使用64位的Windows副本,则应该能够使用64位的Python副本扩展2GB.
这IndexError是因为Python MemoryError  在计算整个数组之前遇到了异常.这又是一个记忆问题.
要解决这个问题,您可以尝试使用64位的Python副本,或者更好地找到一种方法将结果写入文件.为此,请看numpy的内存映射数组.
您应该能够将整个计算集运行到其中一个阵列中,因为实际数据将写入磁盘,并且只有一小部分计算存储在内存中.
Python没有内存限制.但是,MemoryError如果RAM耗尽,你会得到一个.你说你有20301个元素list.这似乎太小而不会导致简单数据类型(例如int)的内存错误,但如果每个元素本身都是一个占用大量内存的对象,那么你可能会耗尽内存.
该IndexError然而,可能是造成因为你ListTemp已经得到了只有19767元(索引0到19766),并且您试图访问过去的最后一个元素.
如果不确切知道你想要做什么,很难说你能做些什么来避免达到极限.使用numpy可能有帮助.看起来你正在存储大量数据.可能您不需要在每个阶段存储所有内容.但是如果不知道就不可能说出来.
| 归档时间: | 
 | 
| 查看次数: | 217066 次 | 
| 最近记录: |