我意识到一个python脚本中存在内存泄漏.首先占用25MB左右,15天后占用超过500MB.
我遵循了许多不同的方式,并没有能够成为问题的根源,因为我是一个蟒蛇新手......
最后,我得到了以下内容
objgraph.show_most_common_types(limit=20)
tuple 37674
function 9156
dict 3935
list 1646
wrapper_descriptor 1468
weakref 888
builtin_function_or_method 874
classobj 684
method_descriptor 551
type 533
instance 483
Kind 470
getset_descriptor 404
ImmNodeSet 362
module 342
IdentitySetMulti 333
PartRow 331
member_descriptor 264
cell 185
FontEntry 170
Run Code Online (Sandbox Code Playgroud)
我设定了一个断点,在每次迭代之后,这就是正在发生的事情......
objgraph.show_growth()
tuple 37674 +10
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法?
(Pdb) c
(Pdb) objgraph.show_growth()
tuple 37684 +10
Run Code Online (Sandbox Code Playgroud)
我想打印出所有的元组,并交叉检查 - 每次添加10个元组会给我一些线索吗?请告诉我如何做到这一点..
或者有没有其他方法来找出这个内存泄漏.我使用python 2.4.3,并且由于许多其他产品依赖 - 不幸的是我不能/不应该升级.
设想:
我有一个连续运行的 python 进程(直到我们手动停止 - 无限地)并通过每 1 分钟读取某些系统文件来收集数据。当它启动时,它占用大约25 MB。但占用的内存量一天天增加,15天后就超过了500MB。
希望细节足够清楚,更多细节请告诉我,我可以澄清。
更新
我试图按照这个线程显示正在运行的Python应用程序的堆栈跟踪,但我面临以下无法完全解决的错误。
我搜索找到了这样的方法,可以挂钩已经运行的进程并获取堆栈/内存信息。但还没有运气,请帮助我。
有没有任何插件/扩展名bugzilla可以通过电子邮件发送个人用户"每天/每周分配给他们的错误列表"?
我知道每个用户为自己做这件事非常简单.但我正在寻找一个解决方案,管理员实现这个解决方案,向所有用户发送电子邮件(仅向他们发送有关他们的错误的电子邮件).
我确信应该有一些工具/实用程序可以做到这一点,有人知道它 - 我真的很感激,如果你能提供给我链接(无法找到一个!).
我对它进行了一些调整,例如根据没有状态变化的天数进行着色,将其引入组头 - 可能是可能的!
我甚至看过bugzilla抱怨的功能 - 但它看起来像个人用户 - 或者,它必须为个人用户创建,这是一个痛苦的过程,我们有超过100个用户.谢谢你的时间.
我有一个PDF文件,我想验证其中的链接是否正确。从某种意义上讲是正确的-所有指定的URL都链接到网页,并且没有任何损坏。我正在寻找一个简单的实用程序或可以轻松完成的脚本?
例:
$ testlinks my.pdf
There are 2348 links in this pdf.
2322 links are proper.
Remaining broken links and page numbers in which it appears are logged in brokenlinks.txt
Run Code Online (Sandbox Code Playgroud)
我不知道是否存在类似的东西,所以也用stackoverflow进行了google搜索。但是没有发现任何有用的东西。所以想对任何人有任何想法!
更新:使问题更清楚。
memory-leaks ×2
python ×2
bugzilla ×1
hyperlink ×1
linux ×1
memory ×1
pdf ×1
performance ×1
utility ×1
verify ×1