zoukankan      html  css  js  c++  java
  • Python程序调试工具Py-Spy

    序言

    如果你是从Java语言开发转Python开发,可能在庆幸自己的开发效率提高了很多,但是也有痛苦的时候,比如你会怀念jstack,jmap, 等各种工具在生产环境做perfomance tuning。我之前使用过的有GDBPyRasitePyFlame等各种工具,特别是gdb系列工具,入门使用还挺麻烦的。这里推荐大家一款工具:Py-Spy

    引用官方的介绍:

    Py-Spy是Python程序的抽样分析器。 它允许您可视化查看Python程序在哪些地方花了更多时间,整个监控方式无需重新启动程序或以任何方式修改工程代码。 Py-Spy的开销非常低:它是用Rust编写的,速度与编译的Python程序不在同一个进程中运行。 这意味着Py-Spy可以安全地用于生成生产环境中的Python应用调优分析。

    安装

    pip install py-spy
    

    如果你是Rust开发者,也可以用如下命令安装:

    cargo install py-spy
    

    使用

    py-spy可以分析已存在运行的程序(提供PID)或者指定脚本。如下:

    py-spy --pid 12345
    # 或者
    py-spy -- python myprogram.py
    

    输出类似于top命令:
    py-spy-top

    它也可以输出生成性能优化大师布兰登.格雷格推出的可视化图 FlameGraphs
    命令:

    py-spy --flame profile.svg --pid 12345
    # 或者
    py-spy --flame profile.svg -- python myprogram.py
    

    输出如下:

    Py-Spy是如何工作的

    Py-spy通过使用Linux上的process_vm_readv系统调用,OSX上的vm_read调用或Windows上的ReadProcessMemory调用直接读取python程序的内存样本数据分析。

  • 相关阅读:
    ubuntu下安装maven
    159.Longest Substring with At Most Two Distinct Characters
    156.Binary Tree Upside Down
    155.Min Stack
    154.Find Minimum in Rotated Sorted Array II
    153.Find Minimum in Rotated Sorted Array
    152.Maximum Product Subarray
    151.Reverse Words in a String
    150.Evaluate Reverse Polish Notation
    149.Max Points on a Line
  • 原文地址:https://www.cnblogs.com/jcli/p/py-spy.html
Copyright © 2011-2022 走看看