问题描述
我目前正在编写一个使用大量RAM的python程序。我知道我可以使用垃圾收集器“释放”内存并避免此问题。但是,我使用Numba来加快我的代码的速度,这使我需要释放RAM的部分与垃圾收集器不兼容。另外,这会使我的代码减速到无法使用的地步。现在,我正在具有32 GB RAM的MacBook Pro上测试代码。我对软件开发了解一点,但对硬件却不了解。我将把我的代码从Mac转换到树莓派和Nano Pi Fire 3上。这是因为我正在使用多处理模块(Raspberry Pi具有4个内核,Nano Pi Fire 3具有8个内核)。我显然也使用MPI模块传递消息。在短暂搜索后,我发现可以增加更多RAM的一种解决方案是交换文件,这在我使用的2种类型的板上都很容易设置。但是,我想知道这对于python代码是否实际上是可行的选择?如果我允许使用128 GB的交换文件并使用zRAM。这是针对仅用于运行此代码的主板的,我是否再也不会遇到RAM问题?
这就是我认为这是RAM出现问题的原因:
第一个迹象是,如果我不使用Numba加快特定功能的速度,则该程序将完全正常运行,但速度较慢。但是,当我从Numba使用加速时,这是我收到的崩溃报告:
VM Region Summary:
ReadOnly portion of Libraries: Total=688.6M resident=0K(0%) swapped_out_or_unallocated=688.6M(100%)
Writable regions: Total=1.0G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.0G(100%)
VIRTUAL REGION
REGION TYPE SIZE COUNT (non-coalesced)
=========== ======= =======
Dispatch continuations 32.0M 1
Kernel Alloc Once 8K 1
MALLOC 750.4M 1263
MALLOC guard page 16K 3
MALLOC_LARGE (reserved) 384K 2 reserved VM address space (unallocated)
STACK GUARD 32K 8
Stack 19.6M 8
VM_ALLOCATE 101.2M 723
VM_ALLOCATE (reserved) 160.0M 2 reserved VM address space (unallocated)
__DATA 28.3M 399
__DATA_CONST 20K 1
__FONT_DATA 4K 1
__LINKEDIT 407.9M 116
__OBJC_RO 32.2M 1
__OBJC_RW 1892K 2
__TEXT 280.7M 359
__UNICODE 564K 1
shared memory 12K 3
=========== ======= =======
TOTAL 1.8G 2894
TOTAL,minus reserved VM space 1.6G 2894
Model: MacBookPro16,1,8 processors,8-Core Intel Core i9,2.3 GHz,16 GB,SMC
因此,可以看出我的程序中使用了大量RAM和交换空间。如果我找不到解决方案,或者无法在板上添加交换空间,那么显然我将不得不牺牲实际速度。但是,如果知道我认为可行的解决方案在我可能会浪费时间这样做之前会真正起作用,那就太好了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)