gpt4 book ai didi

python - 如何在多处理进程中保护日志记录对象免受垃圾收集器的影响?

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:17 25 4
gpt4 key购买 nike

我使用 Python 的多处理模块 2.6 创建了几个工作进程。在每个工作人员中,我使用标准日志记录模块(每个工作人员具有日志轮换和文件)密切关注 worker 。我注意到几个小时后就没有了事件被写入日志。该进程似乎没有崩溃并且仍然响应通过我的队列发送命令。使用 lsof 我可以看到日志文件不再打开。我怀疑日志对象可能被垃圾收集器杀死,如果是这样有什么办法我可以标记它以保护它吗?

最佳答案

我同意@THC4k。这看起来不像是 GC 问题。我会给你我的理由,我相信如果我错了,有人会投票否决我(如果是这样,请发表评论指出我的错误!)。

如果您使用 CPython,它主要使用引用计数,当引用计数为零时,对象会立即销毁(从 2.0 开始,还提供补充垃圾收集来处理循环引用的情况)。保留对日志对象的引用,它不会被破坏。

如果您使用 Jython 或 IronPython,则底层 VM 会执行垃圾收集。再次强调,保留一个引用,GC 不应该碰它。

无论哪种方式,似乎要么您没有保留对需要保持事件状态的对象的引用,要么您遇到了其他错误。

关于python - 如何在多处理进程中保护日志记录对象免受垃圾收集器的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4314912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com