32位机上,numpy创建数组不大时还是内存不足,如何查看创建numpy数组可分配的内存量

问题遇到的现象和发生背景

在一台32位机上运行同一个计算程序,有时能成功运行,有时Unable to allocate 218MiB for an array。不到300M内存都不足。

问题相关代码,请勿粘贴截图
import psutil
import traceback
import numpy as np
mem = psutil.virtual_memory()
zj=float(mem.total)/(1024*1024)
ysy=float(mem.used)/(1024*1024)
kx=float(mem.free)/(1024*1024)
print("1:系统总计内存%.3f MB, 系统已使用内存%.3f MB, 系统空闲内存%.3f MB"%(zj, ysy, kx))

try:
    print('model start')
    offline_process()                          #数据处理程序,内部涉及从其他文件获取数据用numpy处理
    #程序需要创建很多数组,有成功案例,但是大多数是在创建 shape(34,838484)的数组时报错的
  
    print("offline processing finished")
    mem = psutil.virtual_memory()
    zj=float(mem.total)/(1024*1024)
    ysy=float(mem.used)/(1024*1024)
    kx=float(mem.free)/(1024*1024)
    print("2:系统总计内存%.3f MB, 系统已使用内存%.3f MB, 系统空闲内存%.3f MB"%(zj, ysy, kx))
except:
    traceback.print_exc()
    mem = psutil.virtual_memory()
    zj=float(mem.total)/(1024*1024)
    ysy=float(mem.used)/(1024*1024)
    kx=float(mem.free)/(1024*1024)
    print("error:系统总计内存%.3f MB, 系统已使用内存%.3f MB, 系统空闲内存%.3f MB"%(zj, ysy, kx))
运行结果及报错内容

用spyder运行以上.py代码,可能会成功,也可能会报错

运行成功时:
控制台显示:
1:系统总计内存3506.219 MB, 系统已使用内存1610.547 MB, 系统空闲内存1895.672 MB
model start
offline processing finished
2:系统总计内存3506.219 MB, 系统已使用内存2048.359 MB, 系统空闲内存1457.859 MB

运行失败报错时:
控制台显示:
1:系统总计内存3506.219 MB, 系统已使用内存1543.348 MB, 系统空闲内存1962.871 MB
model start
error:系统总计内存3506.219 MB, 系统已使用内存2033.484 MB, 系统空闲内存1472.734MB
MemoryError:Unable to allocate 218.MiB for an array with shape(34,838484) and data type float64

我的解答思路和尝试过的方法

在64位机上运行都会成功。最疑惑的是有些时候spyder运行成功,有时候失败,但是在失败报错后关闭spyder后重启再运行成功率会上升,而且一般报错内存不足后不退出spyder直接继续运行多半还是内存不足,而且会在中间步骤报错:MemoryError:Unable to allocate 46.MiB for an array with shape(34,838484) and data type float64,在中间步骤就出错。所以才想是32位机器内存不足,用psutil.virtual_memory()方法查看已使用与空闲内存,但是发现空闲内存很多,启动任务管理器实时监视也会发现物理内存充足。

我想要达到的结果

我想询问的内容是如何查看numpy数组创建时,可供分配的剩余内存究竟是多少,还是说spyder或者python限制了可分配的内存。218.MiB数组并不大,也有成功运行的可能性,但是不稳定,即使重启电脑也可能不知道为什么就内存不足了。我希望能够找到准确查看内存,运行程序的方法。