python数组内存错误_大小为150000的数组的python内存错误

您正在尝试创建150000 x 150000数组。我不确定您使用的是哪种数据类型,但如果是int32(每个数字4个字节),并且忽略了您尝试分配的数组的开销:>>> 150000 * 150000 * 4 # bytes

90000000000

也就是说

^{pr2}$

所以如果你没有84GB的(免费)内存,你会得到一个内存错误。在

使用itertools则更糟,因为您需要一个列表,其中每个元素包含一个指针(在64位计算机上,已经是8字节),并且根据您的python版本和计算机,每个整数需要大约20-30个字节:>>> import sys

>>> sys.getsizeof(1)

28

基本上,这将导致RAM要求:>>> (28 + 8) * 150000 * 150000 # bytes

810000000000

>>> (28 + 8) * 150000 * 150000 / 1024 / 1024 / 1024 # Gigabytes

754.37

如果有足够的硬盘存储空间,可以尝试计算从一个阵列的每个点到另一个阵列中所有点的距离,然后将其保存到磁盘,然后转到第一个阵列中的下一个点,计算到第二个阵列中所有点的所有距离,依此类推。但是,根据存储值的方式(例如,如果以txt格式保存值),可能会占用更大的内存。但这只允许您计算距离-您将无法将所有值保存在RAM中。在

对于MemoryError,最直接的解决方案是购买更多的RAM(您可以根据上面的数字计算出需要多少RAM)。如果这不是一个选择,你需要改变你的方法。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值