我有一个需要内存的应用程序,它遍历一对数组,处理每个元素组合。目前这个脚本非常需要RAM。它最终使用大约3GB的RAM。
我的问题是:
在一个大型流程中处理每个元素组合是否更节省内存?或者为每个组合开始一个新的子流程更好。
换句话说,做选项1是否更好:
for i in param_set1:
for j in paramset2:
Do_A_Big_Job(i, j)
或选项2:
import subprocess
for i in param_set1:
for j in paramset2:
subprocess.call([Do_A_Big_Job_Script, i, j])
“更好”,我的意思是“少用RAM”。
谢谢!
修改 我对内存使用情况很好奇。当进程结束时,UNIX系统是否会释放该内存?对于合理写得好的脚本,这比python的垃圾收集更有效吗?我没有很多可用的内核,所以我希望多个进程或多或少并行运行。
答案 0 :(得分:1)
运行单个进程当然会占用较少的RAM,但这会使得利用多个cpus / core变得困难。
如果您不关心需要多长时间,请运行一个过程。
作为折衷方案,您可以一次运行几个流程,而不是一次性启动它们。