相关疑难解决方法(0)

如何在生产系统中找到Python进程中使用内存的内容?

我的生产系统偶尔会出现我在开发环境中无法重现的内存泄漏.我使用了Python内存分析器(特别是Heapy)在开发环境中取得了一些成功,但它无法帮助我处理我无法重现的事情,而且我不愿意使用Heapy来检测我们的生产系统,因为它需要一段时间来做它的事情,它的线程远程接口在我们的服务器中不能很好地工作.

我想我想要的是一种转储生产Python进程(或至少是gc.get_objects)的快照的方法,然后离线分析它以查看它在哪里使用内存. 我如何获得这样的python进程的核心转储? 一旦我有了,我该怎么做一些有用的东西?

python coredump memory-leaks

39
推荐指数
3
解决办法
2万
查看次数

是否可以将Python解释器的状态保存到文件中?

如果用户使用我的Python应用程序并且应用程序崩溃,应用程序的状态可以保存到文件并发送给我,即开发人员,该怎么办?我打开Python解释器并从用户崩溃的地方开始调试.


为了澄清一下,当我调试应用程序并引发一个未处理的异常时,我可以调试应用程序验证,访问所有局部变量及其值,这对于快速修复错误至关重要.当用户的应用程序崩溃时,我只收到错误发生时的堆栈跟踪,这很有用,但不会像交互式调试那样多.

那么是否可以将Python应用程序的状态保存到文件中,关闭解释器,然后在稍后阶段从该文件恢复执行?

python python-2.7

17
推荐指数
1
解决办法
2817
查看次数

15
推荐指数
1
解决办法
3114
查看次数

Python:用一些不可打击的物品腌制一个字典

我有一个gui_project具有属性的对象.namespace,这是一个命名空间字典.(即从字符串到对象的字典.)

(这在类似IDE的程序中使用,让用户在Python shell中定义自己的对象.)

我想gui_project用命名空间来腌制它.问题是,命名空间中的某些对象(即.namespacedict的值)不是可选对象.例如,其中一些是指wxPython小部件.

我想过滤掉不可剔除的对象,也就是说,将它们从pickle版本中排除.

我怎样才能做到这一点?

(我尝试过的一件事就是逐一对价值进行尝试并尝试腌制它们,但是发生了一些无限递归,我需要保护它.)

(我现在实现了一种GuiProject.__getstate__方法,除了其他无法解决的东西namespace.)

python graceful-degradation pickle

11
推荐指数
2
解决办法
4827
查看次数