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

标签 python unix memory subprocess

我有一个需要大量内存的应用程序,它遍历一对数组,处理元素的每个组合。目前这个脚本非常需要 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 的垃圾收集更有效?我没有很多可用的内核,所以我希望多个进程或多或少地并行运行。

最佳答案

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

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

作为妥协,您可以一次只运行几个进程,而不是一次启动所有进程。

关于python - 一个大进程或多个小进程的内存使用情况更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14249056/

相关文章:

Java 字符与字符 : what about memory usage?

python - 使用电子表格数据时如何避免嵌套循环?

Python:在循环中以对数对数比例绘制误差条,然后保存图像

python - 在 Python 中制作 ByteEnum 最简单的方法是什么?

c - 为什么无缓冲的 read()/write() 操作使用缓冲区缓存?

unix - 获取与模式匹配的文件数的快速方法

linux - 没有覆盖 -n 被 cp 命令忽略

python - Django Formset错误 'JournalVoucherEnteryForm'对象没有属性 'instance'

memory - 在Grails中使用内存域对象的最佳方法是什么?

c++ - 从套接字读取到缓冲区