我编写了一个生物信息学python程序,它大量使用了python的多处理程序包。我发现在MacOSX和Linux系统上运行时子进程使用的内存之间存在差异。 MacOSX使用较少的内存。
当我分析在每个系统上运行的子进程的内存时,我发现平台之间存在显着差异。我在开始和结束时分析每个进程如下(based on this SO answer,注意:MacOSX报告进程的内存使用情况为Bytes和Linux报告为Kilobytes ):
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
Linux报告每个进程需要1GB,而MacOSX报告每个作业大约需要300MB。更重要的是,MacOSX似乎从小开始,并在整个过程中不断发展,而Linux开始并保持在1GB左右。
所以我的问题:
这是否与平台处理分叉的方式有关?也许MacOSX会生成一个新进程,而默认情况下会出现Linux forks。我正在使用Python 2.7,因此我无法控制进程的启动方法(我认为)。
我是否认为这是一个分叉问题?还有其他人遇到过这个问题吗?如何控制Linux中的内存使用情况?