排查Python卡慢神器】的更多相关文章

前面我们已经介绍了,python中两种最基础的虚拟环境管理工具,venv和virtualenv,其中virtualenv可以和virtualenvwrapper配合使用.详情请参考:https://www.cnblogs.com/doublexi/p/15783355.html 下面我们来介绍另一个python多环境管理神器pyenv pyenv pyenv 主要用来对 Python 解释器进行管理,可以管理系统上的多个版本的 Python 解释器.它的主要原理就是将新的解释器路径放在 PATH…
    某Team在用Python开发一些代码,涉及子进程以及设法消除僵尸进程的需求.实践中他们碰上Python程序非预期退出的现象.最初他们决定用GDB调试Python解释器,查看exit()的源头.我听了之后,觉得这个问题应该用别的调试思路.帮他们排查这次程序故障时,除去原始问题,还衍生了其他问题. 这次的问题相比西安研发中心曾经碰上的Python信号处理问题,有不少基础知识.先验知识是共用的,此处不做再普及,感兴趣的同学可以翻看我以前发过的文章. 下文是一次具体的调试.分析记录.为了简化现…
本文主要介绍3个工具:pdb,objgraph,以及pympler. 1.pdb pdb是专门用于python代码调试,模仿gdb. 使用pdb可以查看堆栈,打印变量等. 这里介绍的是命令行下的pdb. 命令行下使用pdb,代码侵入小,调试方便. 本例中,python安装在当前目录下.venv 使用pdb加载python程序 .venv/bin/python -m pdb orange.py > /Users/lanyang/workspace/orange/orange.py(3)<modu…
这次的内存泄露问题是发生在多线程场景下的. 各种工具都试过了,gc,objgraph, pdb,pympler等,仍然没有找到问题所在. pdb感觉用起来很方便,可以调试代码,对原来的代码无侵入性. 排查问题的过程中,多线程场景下,相关的工具,显得无力的. 使用objgraph时,代码执行很长时间后,show_growth()显示没有新创建的对象.这个可能是因为objgraph只针对当前线程的上下文. pympler,也是同样的问题. 最后,是通过分析进程的资源占用数据,找到的问题位置. 总结一…
同事给我推荐了这个调试神器,一直没工夫看,今天看了下. 原文链接: 史上最方便的Python Debug工具|腾讯技术说 体验了下,感觉最好的用法:1.优先逐行调试:2.一些复杂状态处理或者偶现的bug,可以用这个库调试:感觉并不会颠覆传统的调试手段,只是让添加日志更加便利了而已. 但是同事从后台开发的角度给出了他的看法,稍微大型的python项目都只有开发的时候才逐行,服务器他们基本都靠日志,只是客户端习惯了debugger的调试.写个桌面程序,debugger很容易,这个服务就没那么简单了,…
pipenv 参考官网:https://pipenv.pypa.io/ pipenv 是一款比较新的包管理工具,其借鉴了 javascript 的 npm 和 PHP 的 composer 等理念,通过一个依赖描述文件 Pipfile 来安装和管理依赖,以达到协同开发的目的.如果你熟悉 npm 或者 composer 的话,那 pipenv 正合你胃口.pipenv 其实整合了 pip 和 virtualenv 等库,在其上推出了更便捷的使用方式. 1.安装pipenv 直接使用pip命令安装…
为了解决python多版本共存,解决不同版本之间的依赖冲突,虚拟环境隔离等问题,我们前面介绍了venv.virtualenv.virtualenvwrapper.pyenv.pipenv等众多工具.下面我们再介绍一个非常强大的多环境管理神器--Anaconda. Anaconda (强大) 1.什么是Anaconda Anaconda是专注于数据分析的Python发行版本,包含了conda.Python等190多个科学包及其依赖项.Anaconda通过管理工具包.开发环境.Python版本,大大…
原文: http://www.lengirl.com/code/python-click.html Click 是用Python写的一个第三方模块,用于快速创建命令行.我们知道,Python内置了一个Argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click相比于Argparse,就好比requests 相比于urllib. 快速使用 Click 的使用大致有两个步骤: 使用 @click.command()装饰一个函数,使之成为命令行接口: 使用 @click.option()等…
最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是传统的使用setup.py的方式来进行exe安装.但是结果都不是很好,不是很如人意.并且py2exe所使用的一个python 包互相排斥,只要安装了这个包,就无法进行exe化.甚至代码里面都不需要导入,就会报错. 因此,只能无奈放弃了py2exe工具.转而使用pyinstaller.使用感受真的是甩…
大名鼎鼎的aiohttp,相信如果你学习Python或者爬虫的时候,肯定听说过这个东西.没听过也不要紧,今天看完文章,只要记住,aiohttp这个东西,在写爬虫的时候,很牛逼就行了. aiohttp 就是一个用 asyncio实现的 HTTP client/server. 你可以通过它来简单实现一个具有异步处理功能的 clients 和 servers. aiohttp同时还支持 Server WebSockets 和 Client WebSockets,让你使用起来更加简单. 今天,皮爷就带你…