Python 一个大进程或多个小进程的内存使用情况更好吗?
我有一个内存不足的应用程序,它遍历一对数组,处理元素的每个组合。目前这个脚本非常需要内存。它最终使用了大约3GB的RAM 我的问题是: 在一个大进程中处理元素的每个组合是否更高效?还是为每个组合启动一个新的子流程更好 换句话说,做选项1是否更好:Python 一个大进程或多个小进程的内存使用情况更好吗?,python,unix,memory,subprocess,Python,Unix,Memory,Subprocess,我有一个内存不足的应用程序,它遍历一对数组,处理元素的每个组合。目前这个脚本非常需要内存。它最终使用了大约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
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])
我所说的“更好”,是指“使用更少的内存”
谢谢
编辑
我对内存使用非常好奇。当进程结束时,UNIX系统会释放该内存吗?对于编写得相当好的脚本,这比python的垃圾收集更有效吗?我没有很多可用的内核,因此我希望多个进程或多或少并行运行。运行单个进程当然会使用更少的RAM,但这会使利用多个CPU/内核变得困难 如果您不在乎需要多长时间,请运行单个进程
作为一种折衷办法,您可以一次只运行几个进程,而不是一次启动所有进程。内存使用情况完全取决于您对“作业”(分配和释放的变量)所做的工作,而不是如何分配它们。如果每个作业都使用大量内存,那么并行运行它们会使内存堆栈变大。唯一的冒险是它可能更快。我想把它作为一个答案发布,但我不认为它真的适合作为一个答案xD我只是想指出,你可能问错了东西。您的编辑似乎是一个更精确的问题,值得等待了解该主题的人。顺便说一句,这将有助于添加一些标记,使问题易于查找(如UNIX、内存、子进程等)