在python程序中使用交换空间是个好主意吗?

问题描述

我目前正在编写一个使用大量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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...