繁体   English   中英

如何注册要在垃圾收集 (GC) 启动和完成时调用的 Python 函数?

[英]How do I register a python function to be called when garbage collection (GC) starts and is completed?

我们有一个复杂的 Python/Spark 程序,它使用了大量内存。 我们希望在 Python 和 Java 开始垃圾收集时收到通知。 python gc模块文档讨论了回调并说明了它们提供的参数,但没有说明如何将 python 函数注册为在 python 启动和完成垃圾收集时调用的回调。

如何注册要在垃圾收集 (GC) 启动和完成时调用的 Python 函数?

只需将您的函数附加到callbacks列表中

import gc

def gb_callback_example(phase, info):
   ... Do some stuff

gc.callbacks.append(gb_callback_example)

gc.callbacks 垃圾收集器在收集前后将调用的回调列表。 将使用两个参数,阶段和信息调用回调。

phase 可以是以下两个值之一:

“start”:垃圾收集即将开始。

“停止”:垃圾收集已经完成。

info 是一个为回调提供更多信息的字典。 当前定义了以下键:

“generation”:被收集的最老的一代。

“已收集”:当阶段为“停止”时,成功收集的对象数。

“uncollectable”:当阶段为“停止”时,无法回收并放入垃圾中的对象数。

应用程序可以将自己的回调添加到此列表中。 主要用例是:

收集有关垃圾收集的统计信息,例如收集各代的频率以及收集所需的时间。

允许应用程序在它们出现在垃圾中时识别和清除它们自己的不可收集类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM