如何知道python进程是否经常进行垃圾收集?

如何知道python进程是否经常进行垃圾收集?,python,performance,memory-management,garbage-collection,pytorch,Python,Performance,Memory Management,Garbage Collection,Pytorch,我正在调整python作业(使用Pytorch和Nvidia Cuda)的性能。我的python进程在共享集群上运行,其中必须显式指定所需的最大RAM。因为越低越好,我们倾向于设置越低的RAM,而不会导致内存不足 特别是,我注意到RAM可以对性能产生很大的影响。例如,如果我将RAM设置为6GB,我的工作需要27小时。如果我将max RAM设置为10GB(保持所有其他变量不变),则相同的作业大约需要16小时。大部分工作都是使用GPU RAM在GPU上完成的,因此CPU和CPU RAM仅用于内务处理

我正在调整python作业(使用Pytorch和Nvidia Cuda)的性能。我的python进程在共享集群上运行,其中必须显式指定所需的最大RAM。因为越低越好,我们倾向于设置越低的RAM,而不会导致内存不足

特别是,我注意到RAM可以对性能产生很大的影响。例如,如果我将RAM设置为6GB,我的工作需要27小时。如果我将max RAM设置为10GB(保持所有其他变量不变),则相同的作业大约需要16小时。大部分工作都是使用GPU RAM在GPU上完成的,因此CPU和CPU RAM仅用于内务处理和移动张量

我怀疑当我设置更少的RAM时,垃圾收集器运行得太频繁。我在处理JavaVM时观察到了这种行为

然而,对于python,我一无所知


是否有任何方法可以检查内存管理,特别是垃圾收集器时间(运行时的分数)?

CPython使用引用计数进行内存管理。除非您有引用循环(在这种情况下,我们必须检查a),否则一旦对象的引用计数达到0,就会确定地回收对象。现在,有一个循环垃圾收集器(可以通过
gc
模块控制)。简单地关闭它可能安全,也可能不安全,至少,它会让你看到它是否对时间有影响。太好了!,感谢链接到“最小的、完整的、可验证的示例”,我将尝试获取该示例