Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个大进程或多个小进程的内存使用情况更好吗?_Python_Unix_Memory_Subprocess - Fatal编程技术网

Python 一个大进程或多个小进程的内存使用情况更好吗?

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

我有一个内存不足的应用程序,它遍历一对数组,处理元素的每个组合。目前这个脚本非常需要内存。它最终使用了大约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])
我所说的“更好”,是指“使用更少的内存”

谢谢

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

运行单个进程当然会使用更少的RAM,但这会使利用多个CPU/内核变得困难

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


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

内存使用情况完全取决于您对“作业”(分配和释放的变量)所做的工作,而不是如何分配它们。如果每个作业都使用大量内存,那么并行运行它们会使内存堆栈变大。唯一的冒险是它可能更快。我想把它作为一个答案发布,但我不认为它真的适合作为一个答案xD我只是想指出,你可能问错了东西。您的编辑似乎是一个更精确的问题,值得等待了解该主题的人。顺便说一句,这将有助于添加一些标记,使问题易于查找(如UNIX、内存、子进程等)