如何在运行中的 Python 脚本中强制进行垃圾回收

5
为了调查一些未释放系统资源的问题,我想在一个已经运行的Python脚本上强制立即进行垃圾回收。是否有可能通过发送某种信号给Python,让它理解为运行gc的命令,或者其他类似的方式来实现?谢谢。
我在Linux服务器上运行Python 2.7。

你能具体说明一下吗?比如说一个API来发送信号给进程并告诉它做某事(gc)?你想在什么条件下执行它?手动、定时任务、当某个事件发生时,还是其他情况? - Alexander Ejbekov
我正在寻找针对特定的Python进程(即uwsgi)执行手动命令的方法。 - knaperek
@TkTech已经建议使用signal模块。我可以添加RabbitMQ或ZeroMQ,但您需要创建一个单独的线程来监听信号。RabbitMQ非常简单和直接。我个人更喜欢ZeroMQ,因为它更加灵活,但如果您没有先前的经验,它可能会更加困难。 - Alexander Ejbekov
2个回答

2
使用内置的signal模块安装信号处理程序,然后从您的自定义处理程序中调用gc.collect()
如果您无法控制应用程序,则必须使用类似pyringe的工具,该工具允许您插入任意Python代码。

0

你可以使用调试器连接到正在运行的Python脚本,并在其中发出任何命令,就像在交互式控制台中一样。我使用了PyCharm的调试器,但还有其他各种调试器可供选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接