首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >饥饿的Python工作线程中的内存泄漏

饥饿的Python工作线程中的内存泄漏
EN

Stack Overflow用户
提问于 2013-09-29 18:05:28
回答 1查看 577关注 0票数 6

我有几个工作人员在监听RabbitMQ队列,他们正在做一些磁盘I/O密集型工作-打开大约18MB的文件,进行一些解析并写入一些文件。在处理一个作业时,工作人员可能会占用高达200MB的内存。这个很好。

然而,我的问题是,worker继续处于空闲状态,并且仍然保留了这么多内存。我盲目地尝试在工作完成后使用gc.collect()手动执行一些垃圾收集,但没有任何结果。

接收作业的worker类如下所示:

代码语言:javascript
复制
class BuildWorker(worker.Worker):

    def callback(self, ch, method, properties, body):
        fp = FileParseAndStuff()
        fp.execute_job(ch, method, properties, body)
        fp = None

这里fp中发生的所有事情都应该包含在内存中,并在我将该对象设置为None后删除。我也尝试过使用Python的del语句,但没有任何改进。

我使用Python2.7和python-pika与RabbitMQ服务器进行通信。

EN

回答 1

Stack Overflow用户

发布于 2013-09-29 19:07:05

fp = None之前添加一个标记,比如“write to a file”或print to console。当您调用del或gc.collect()时,您的worker可能还不在那里。如果是,请检查您的execute_job方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19076737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档