首页 > 编程语言 > 详细

python debug查看进程和线程挂死问题和内存泄漏

时间:2019-11-10 21:52:56      阅读:137      评论:0      收藏:0      [点我收藏+]

1、python 调试工具 pyrasite 可以附加到python进程中,在这个进程中打开一个python 命令行。然后再这个里面执行代码。

(对于这种挂死问题通常是由于多进程和多线程混用导致的,多线程中如果有锁,在使用fork创建多进程的过程中fork出来的进程是单线程执行的,只会复制内存中的对象当前的信息,如果有一把锁被别的线程获取到,我们当前fork出的进程中的这个线程中,这把锁的状态只会是锁定状态,会导致子进程中再使用这个锁的时候会导致死锁。)

2、对于python进程中的挂死问题,我们需要对于进程中所有的线程查看它们卡死在了哪一个位置。

当我们进入这个进程中后,我们可以执行下面的代码查看进程的帧栈。

import sys
for threadid,stack in sys._current_frame().items():
    print(threadid,stack)

3、对于内存泄漏问题,我们可以使用objgraph来查看内存泄漏,对于python  代码造成的内存泄漏,我们可以很容易得看出来泄漏对象的引用关系。

但是对于C代码造成的泄漏,我们通常只能看出对象类型来,并不能看出泄漏对象的引用关系。所以还要一步一步排除。

python debug查看进程和线程挂死问题和内存泄漏

原文:https://www.cnblogs.com/lycsdhr/p/11831788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!