1、python 调试工具 pyrasite 可以附加到python进程中,在这个进程中打开一个python 命令行。然后再这个里面执行代码。(对于这种挂死问题通常是由于多进程和多线程混用导致的,多线程中如果有锁,在使用fork创建多...

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查看进程和线程挂死问题和内存泄漏


基础教程推荐
- python之Linux基础(十) 2023-09-04
- Python中优雅处理JSON文件的方法实例 2023-08-04
- python中not not x 与bool(x) 的区别 2023-08-11
- Python Pandas如何获取和修改任意位置的值(at,iat,loc,iloc) 2023-08-04
- python之进程池和线程池 2023-09-03
- Python 使用openpyxl处理Excel文件详情 2022-09-02
- python3使用ctypes在windows中访问C和C++动态链接库函数示例 2023-09-03
- Python 基础知识点理解(三)之Python多进程和多线程的区别和联系 2023-09-04
- python进程和线程 2023-09-03
- Windows下编译PythonQt3.2正确姿势 2023-09-03