首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成大型报告

生成大型报告
EN

Stack Overflow用户
提问于 2011-08-29 19:42:32
回答 2查看 150关注 0票数 0

当我为一个巨大的数据库生成报告时,我遇到了这个问题。我的应用程序是django的,当我点击这个从一个巨大的数据库生成报告的报告时,它会在很长一段时间内消耗大量的内存和CPU。但是,一旦报告生成完成,它仍然不会释放内存,因此我的服务器显示了一些问题。实际上,我没有使用任何类型的过滤器来限制获取的记录数量。因此,它会获取所有记录并尝试生成报告。这无疑会消耗大量的内存和CPU。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2011-08-31 00:16:27

请考虑使用mod_wsgi而不是mod_pythonmod_python在apache进程中创建python解释器。这可能会导致大量的内存积压。在mod_wsgi上托管更容易,看看django on apache with mod_wsgi吧。另一个原因可能是您声明了全局变量并将其分配给巨大的报告数据,这阻止了python垃圾收集器释放内存。考虑通过应用一些filters来减少数据集,考虑使用日期限制进行报告。清除缓存由于数据集很大,垃圾收集器可能没有释放它。

票数 2
EN

Stack Overflow用户

发布于 2011-08-31 08:16:33

您可以看到运行中的正常进程行为。当内存由进程分配时,它通常不会被释放回操作系统,而当空闲时,只会返回到实际进程的空闲列表中。对于某些内存分配器和较新版本的Python有一些例外,即如果内存空间顶部的连续内存块被释放,则可以将其返回到操作系统,因此不再计入进程。不过,这是个例外。

您最好在一个单独的进程中执行耗费大量内存的操作,该进程可以在完成时终止。

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

https://stackoverflow.com/questions/7229609

复制
相关文章

相似问题

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