One Big Process或许多小流程的内存使用情况是否更好?

Mau*_*aus 5 python unix memory subprocess

我有一个需要内存的应用程序,它遍历一对数组,处理每个元素组合.目前这个脚本非常需要RAM.它最终使用大约3GB的RAM.

我的问题是:

在一个大型流程中处理每个元素组合是否更节省内存?或者,为每个组合启动一个新的子流程更好.

换句话说,做选项1是否更好:

for i in param_set1:
    for j in paramset2:
        Do_A_Big_Job(i, j)
Run Code Online (Sandbox Code Playgroud)

或选项2:

import subprocess

for i in param_set1:
    for j in paramset2:
        subprocess.call([Do_A_Big_Job_Script, i, j])
Run Code Online (Sandbox Code Playgroud)

"更好",我的意思是"使用更少的RAM".

谢谢!

编辑 我对内存使用情况非常好奇.当进程结束时,UNIX系统是否会释放该内存?对于编写得相当好的脚本,这比python的垃圾收集更有效吗?我没有很多可用的内核,所以我希望多个进程或多或少并行运行.

Joh*_*ooy 1

运行单个进程当然会使用更少的 RAM,但它会很难利用多个 cpu/核心。

如果您不在乎需要多长时间,请运行单个进程。

作为折衷方案,您可以一次只运行几个进程,而不是一次启动所有进程。