漫画:如何分析运行中的 Python 程序?

用python爬取漫画! Hi~ 大家好! 今日教大家用Python爬取某网站的全部漫画,让你想看什么漫画就看什么漫画!本文代码量有的多,请耐心看完!如果不想看分析网页,可拉取到爬取思路和实现代码区域,查看基本思路和代码!经过作者测试,测试过的漫画都可以下载!本文图片以及文本仅供学习、交流使用,要想获得更好的体验,请支持正版! 本文完整代码见文末! 分析网页 受害者: https://www.kanman.com/sort/ 漫画其实是一张一张图片来着,所以我们先找到这些图片的链接在哪里!因为本文是为了实现想看什么漫画就爬取什么漫 阅读详情

遇到的问题

大佬组长透露出几个关键信息:

  • 1. 要排查的是线上正在运行的 Python 程序

  • 2.“凌晨 3 点多的时候可能出现”,表示问题并不是每天都出现的

  • 3. 问题现象是程序卡死,重启后,有可以正常运行

线上服运行在真实环境,使用真实数据长时间运行,这种非必发性的错误通常难以在测试服或灰度服中发现,而且这种错误看日志通常难以判断出现这种问题的真正原因,可能其他地方的代码出现了问题,但没有被处理,导致异常状态一直堆积,一段时间后才出现的问题。

根据上面的关键信息,我开始进行如下思考:

  • 1. 思考是否可以构建「最小实例进行复现呢?」,可以复现就说明找到了问题。

  • 2. 是代码的问题还是其他依赖服务存在问题导致本 Python 程序出现问题?

自己在测试环境运行相同的代码,发现没有任何问题,那是其他依赖的问题?这么多依赖服务,一个个查是不现实的,那只能在代码中加多点日志,然后再放到线上去看了?

其实还有使用更简单的方法去定位错误,那就使用 py-spy

使用 py-spy

py-spy 是一款开源的 Python 程序的抽样分析工具,使用 py-spy 可以很直观的查看 Python 程序的进程堆栈以及不同方法的耗时等,整个监控方式不需要对正在运行的程序做任何处理,即你不要修改程序代码也不需要重启程序。

py-spy 使用 Rust 语言开发,Rust 语言是一门号称 C/C++ 的运行速度、类 JavaScript 写法的语言,简单而言,就是开发效率高运行效率也高。py-spy 基于 Rust 语言提供的强大特性,使得它可以安全的用于生产环境中的 python 程序。

通过 pip 安装 py-spy

pip3 install -i https://pypi.doubanio.com/simple/ py-spy

安装完后就可以使用了,如果你是 windows 用户,需要下载预构建的二进制文件进行安装,细究可参考官方说明(在最后参考一节)。

通过 py-spy help 查看该工具支持的指令,总共就 3 种不同的指令,非常简单。

首先来使用 top 命令,它会生成类似 Unix 系统中 top 命令的效果,它有两种使用方式,分别如下。

# 如果python程序正在运行,直接通过pid进行采样
sudo py-spy top --pid 12345
# OR
# 如果python程序没有运行,可以使用如下命令
sudo py-spy top -- python myprogram.py

因为线上 Python 服务本身就是运行状态,所以直接通过 pid 去查看运行进程中的信息,这些信息会依据 py-spy 的采样实时更新。

从上图可以看出,top 命令会显示出当前 Python 进程中 GIL 锁的使用率、活跃线程率、线程数等总体信息,此外还会列出程序中不同方法的占用时间,其中的信息包含了使用的第三方库所占用的时间。

此外,还可以让 py-spy 生成火焰图(flame graph),通过火焰图可以更直观的判断出程序的性能情况。

py-spy 生成火焰图只需使用 record 命令则可,与 top 命令类似,同样有两种使用方式,如下。

py-spy record -o profile.svg --pid 12345
# OR
py-spy record -o profile.svg -- python myprogram.py

-o 参数用于指定火焰图生成的路径。

如果你不清楚怎么看火焰图,不用紧张,后面会介绍火焰图的使用方法。

如果你的程序突然卡死了,你又不清楚它为何会卡死,此时就可以通过 py-spy 的 dump 命令来查看当前程序的调用堆栈,通过调用堆栈来判断 Python 程序挂在何处。

dump 命令只能用于正在运行的 Python 程序。

py-spy dump --pid 12345

从图中可以很清晰的看出当前 Python 程序中所有活跃线程的调用栈。

加多 --locals 参数可以将每个堆栈帧关联的局部变量也打印出来,如下图。

py-spy 的简单用法就介绍完了。

读懂火焰图

火焰图通常是 svg 图片,可以直接通过 Chrome 浏览器打开。

py-spy 生成的火焰图其火焰是向下的,而有些工具生成的火焰图其火焰是向上,样式不同,但没有什么本质区别。

看到刚刚 py-spy 生成的火焰图。

火焰图的 y 轴表示程序的调用栈,每一层都是一个函数,调用栈越深,火焰就越高,最底部就是当前正在执行的函数,上方都是它的父函数。

火焰图 x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,表示它被抽样程序抽到的次数越多,也就表示该方法的执行时间较长。

需要注意,火焰图 x 轴不代表时间,而是所有调用栈合并后,按字母顺序排列而成。

此外,火焰图的颜色没有特殊含义。

火焰图是可以互动的。

  • 1. 鼠标悬浮

当鼠标悬浮在火焰的某一层,火焰图都会显示出当前层对应的完整函数名、抽样抽中的次数、占据总抽样次数的百分比。

  • 2. 可点击放大查看

可以点击火焰的某一层,火焰图会水平放大,该层会占满 x 轴,从而显示出该层的详细信息。

  • 3. 可以搜索

点击火焰图中的 Search 会显示一个搜索框,用户可以输入关键字或正则表达式,所有符合条件的函数名都会高亮显示。

其实 Chromme 浏览器本身就可以生成访问某网站时的性能火焰图。

打开开发者工具 -> 切换到「Performance」 -> 点击「录制」按钮开始记录数据,此时访问 github.com,等网页完全加载后,停止录制,此时,开发者工具就会显示出一个时间轴,而它的下方就是一个火焰图。通过这个火焰图可以详细的分析当前页面的性能。

与传统的火焰图不同,x 轴是时间轴,而不是抽样次数。


菜鸟学Python网站全面开通了

www.cainiaopython.com

点击下面阅读原文 直达 菜鸟Python网站 (近400篇原创)

解锁VIP会员漫画:用Python爬虫轻松实现高清漫画下载 requests >>> pip install requests 数据请求模块。parsel >>> pip install parsel 数据解析模块。通过关键字找到对应数据包: 存在一个数据包含了整章漫画内容数据 (41张图)例如: requests >>> pip install requests。发送请求: requests模块 根据开发者工具提示请求方法去发送即可。 阅读详情

相关推荐

【python爬虫】动漫之家漫画下载(scrapy)

【python爬虫】动漫之家漫画下载(scrapy) 好久没有更新自己的优快云,最近在沉迷爬虫,一开始学习爬虫的时候一直想要做一个下载漫画的(毕竟是死宅),但是在掌握下载图片的技术之后,并没能马上实现这个技术,因为一般这种网站,都会用js把漫画的链接各种加密,打乱,所以比较麻烦,在学了selenium之后,倒是可以成功下载了,但是总觉得少了点什么,但是要破解js,又觉得有点难度,本文将带领大家从...

MLXY123的博客 1万+

python代码性能分析_用pyflame来做python程序的性能分析

pyflame是uber官方开源的python性能分析工具,优点是不用修改你的Python代码,直接用命令行对你的Python进程进行profile,拿到结果看图表就好了。按照官方文档进行安装:https://github.com/uber/pyflamesudo apt-get install autoconf automake autotools-dev g++ pkg-config pyth...

weixin_39662228的博客 594

10994部漫画信息,用Python实施大采集,因为反爬差一点就翻车了

擦哥说这网站不正经~

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

解决Python性能瓶颈:py-spy火焰图分析完全手册

你是否曾遭遇Python应用在生产环境中突然变慢却无从下手?还在为定位性能瓶颈而频繁重启服务?本文将带你掌握py-spy这一零侵入式性能分析利器,通过火焰图(Flame Graph)可视化技术,无需修改代码或重启服务即可精准定位Python程序的CPU占用热点。读完本文后,你将能够: - 5分钟内搭建完整的性能分析环境 - 生成专业级火焰图并解读关键指标 - 针对生产环境中的Python服务进行...

gitblog_00187的博客 674

生物信息学实战:如何用STRING数据库和R语言搞定蛋白互作网络分析(附完整代码)

本文提供了一份完整的生物信息学实战指南,详细介绍了如何利用STRING数据库和R语言进行蛋白互作网络分析。从差异表达基因列表出发,涵盖数据准备、数据库连接、网络构建到高级可视化与模块识别的全流程,并附有可复现的完整R代码,帮助研究人员深入解析转录组数据背后的蛋白互作关系。

milk5的博客 950

vue3 web项目引入高拍仪

高拍仪的引入步骤就两步,安装SDK,然后根据官网的api进行开发。根据自己需要的功能,请求对应的接口。

qq_42480170的博客 4118

Python性能分析:cProfile与火焰图的使用指南

性能优化是一个持续的过程,cProfile和火焰图是强大的工具组合,可以帮助我们快速定位问题。记住优化的黄金法则:先测量,再优化,然后再测量。盲目优化往往事倍功半,而基于数据的优化则能有的放矢。在实际项目中,建议将性能分析纳入开发流程,定期进行性能检查,特别是在添加新功能或修改关键代码后。同时,要注意平衡优化与代码可读性之间的关系,避免过度优化。希望本文能帮助你在Python性能优化的道路上更进一步。

MenzilBiz的博客 1523

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 282

使用py-spy绘制python程序火焰图

安装: pip install py-spy 监控pid生成火焰图,文件为profile.svg py-spy record -o profile.svg --pid pid 参考文档:https://www.xingmal.com/article/article/1232585298689527808

Life is short, not float 2159

Excel数据透视表实战:分组折线图制作与动态分析指南

数据可视化是数据分析的关键环节,其核心原理在于将抽象数据转化为直观图形,以揭示趋势、对比差异。在众多图表类型中,折线图因其能清晰展示连续数据随时间或其他序列的变化趋势,而成为趋势分析的利器。其技术价值在于通过视觉编码,将多维数据关系降维呈现,从而辅助决策。在业务分析、运营监控等应用场景中,常需对比不同分组(如产品线、销售区域)在同一时间序列上的表现,这正是分组折线图要解决的核心问题。本文聚焦于利用Excel数据透视表这一强大工具,高效构建动态分组折线图,并深入探讨数据透视表在数据重塑和图表自动化中的实战应用

weixin_29057237的博客 382

医疗 java 实战:2.HIS(医院信息系统)对接

HIS(医院信息系统)是医疗机构的核心管理系统,负责患者的挂号、医嘱、收费、病历管理等核心业务。为了与其他系统(如 LIS、PACS、EMR、医保系统)实现数据互通,HIS 需要进行多种方式的对接。:HIS 需要确保与 LIS、PACS、EMR 之间的数据实时同步,避免数据丢失或延迟。:医生在 HIS 开医嘱后,检验信息需要同步到 LIS,LIS 处理检验后返回结果。:HIS 与 LIS、PACS、EMR 交互患者信息、医嘱、检验报告。:HL7 V2.x 消息(ADT、ORM、ORU 等)。

weixin_44743723的博客 3284

Python知识点:如何使用Py-Spy进行实时性能分析

Py-Spy是一个采样分析器,它可以让开发者在不重启程序或修改代码的情况下,可视化地了解Python程序在哪些地方花费了更多时间。它是用Rust编写的,因此非常快速,并且对被分析程序的性能影响极小,适合在生产环境中使用。

杰哥在此的专栏 1928

Gradient Accumulation 梯度累加/梯度累积 (Pytorch)

我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响。一定条件下,batch_size设置的越大,模型就会越稳定。batch_size的值通常设置在 8-32 之间,但是当我们做一些计算量需求大的任务(例如语义分割、GAN等)或者输入图片尺寸太大的时候,我们的batch size往往只能设置为2或者4,否则就会出现 “CUDA OUT OF MEMORY” 的不可抗力报错。 那么如何在有限的计算资源的条件下,训练时采用更大的batch size...

hxxjxw的博客 5829

漫画:如何分析运行中的Python程序?

内容简介 如何使用py-spy 如何读懂火焰图 遇到的问题 大佬组长透露出几个关键信息: 1.要排查的是线上正在运行的Python程序 2.“凌晨3点多的时候可能出现”,表示问题并不是每天都出现的 3.问题现象是程序卡死,重启后,有可以正常运行 线上服运行在真实环境,使用真实数据长时间运行,这种非必发性的错误通常难以在测试服或灰度服中发现,而且这种错误看日志通常难以判断出现这...

weixin_30230009的博客 416

武汉理工大学数据结构综合实验——连连看游戏综合实践

文章目录实验目的主要仪器设备及耗材一、实验要求二、分析与设计(非线性结构)1.数据结构的设计2.核心算法设计一条直线消子两条直线消子三条直线消子初始化游戏地图搜寻路径提示和重排3.测试用例设计4.测试效果总结 实验目的 (1)线性结构实验目的 调研连连看游戏,了解连连看游戏的功能和规则等 掌握集成开发工具VS2019的使用和C++的基础编程 了解MFC框架 了解线性结构,掌握数组的遍历、消子和胜负判断等算法 了解企业软件开发过程,应用迭代开发思路进行项目开发,养成良好的编程习惯和培养软件工程化思维 .

mo_zhe的博客 7612

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1696

python如何查看当前程序线程数量_漫画:如何分析运行中的 Python 程序?

漫画:如何分析运行中的 Python 程序?内容简介如何使用 py-spy 如何读懂火焰图遇到的问题大佬组长透露出几个关键信息:1. 要排查的是线上服中正在运行的 Python 程序2.“凌晨 3 点多的时候可能出现”,表示问题并不是每天都出现的3. 问题现象是程序卡死,重启后,有可以正常运行线上服运行在真实环境,使用真实数据长时间运行,这种非必发性的错误通常难以在测试服或灰度服中发现,而且这种错...

weixin_28749997的博客 1753

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

如何放大python运行出来的图_漫画:如何分析运行中的 Python 程序?

花下猫语:py-spy 是一个很棒的开源库,用于程序内存的监控分析,它可以生成酷炫的火焰图。今天分享的文章是一篇有趣的使用简介,感兴趣的同学不妨一用。来源:ayuliao@懒编程公众号剧照 | 《无心法师3》内容简介如何使用 py-spy如何读懂火焰图遇到的问题大佬组长透露出几个关键信息:1. 要排查的是线上正在运行的 Python 程序2.“凌晨 3 点多的时候可能出现”,表示问题并不是每天都出...

weixin_39633171的博客 363

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

看漫画学python 豆瓣_漫画:如何分析运行中的Python程序?

内容简介如何使用py-spy如何读懂火焰图遇到的问题大佬组长透露出几个关键信息:1.要排查的是线上正在运行的Python程序2.“凌晨3点多的时候可能出现”,表示问题并不是每天都出现的3.问题现象是程序卡死,重启后,有可以正常运行线上服运行在真实环境,使用真实数据长时间运行,这种非必发性的错误通常难以在测试服或灰度服中发现,而且这种错误看日志通常难以判断出现这种问题的真正原因,可能其他地方的代码出...

weixin_39974882的博客 112

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python制作动图、怎么运行_漫画:如何分析运行中的 Python 程序?

漫画:如何分析运行中的 Python 程序?内容简介如何使用 py-spy如何读懂火焰图遇到的问题大佬组长透露出几个关键信息:1. 要排查的是线上服中正在运行的 Python 程序2.“凌晨 3 点多的时候可能出现”,表示问题并不是每天都出现的3. 问题现象是程序卡死,重启后,有可以正常运行线上服运行在真实环境,使用真实数据长时间运行,这种非必发性的错误通常难以在测试服或灰度服中发现,而且这种错误...

weixin_39525243的博客 140

python 循环中报错 继续运行_漫画:如何分析运行中的 Python 程序?

“Python猫” ,一个值得加星标的公众号花下猫语:py-spy 是一个很棒的开源库,用于程序内存的监控分析,它可以生成酷炫的火焰图。今天分享的文章是一篇有趣的使用简介,感兴趣的同学不妨一用。来源:ayuliao@懒编程公众号剧照 | 《无心法师3》内容简介如何使用 py-spy如何读懂火焰图遇到的问题大佬组长透露出几个关键信息:1. 要排查的是线上正在运行的 Python 程序2....

weixin_39619478的博客 262

python 判断线程状态_漫画:如何分析运行中的 Python 程序?

漫画:如何分析运行中的 Python 程序?内容简介如何使用 py-spy 如何读懂火焰图遇到的问题大佬组长透露出几个关键信息:1. 要排查的是线上服中正在运行的 Python 程序2.“凌晨 3 点多的时候可能出现”,表示问题并不是每天都出现的3. 问题现象是程序卡死,重启后,有可以正常运行线上服运行在真实环境,使用真实数据长时间运行,这种非必发性的错误通常难以在测试服或灰度服中发现,而且这种错...

weixin_39613208的博客 157

过去,我买漫画看;现在,我用Python爬虫来看

原标题:运用Python多线程爬虫下载漫画 以前,我都是买漫画书看的,那个时候没有电脑。今天,我到网上看了一下,发现网上提供漫画看,但是时时需要网络啊!为什么不将它下载下来呢! 文章目录原标题:运用Python多线程爬虫下载漫画1.怎样实现1.1 爬取我们需要的数据(网页链接、漫画名称、漫画章节名称)2.完整代码3.总结 1.怎样实现 这个项目需要的模块有:requests、urllib、th...

坚持不懈的大白的博客 1万+

爬虫可视化分析-基于Python的漫画爬取与分析

本文介绍了一个基于Python Django框架开发的漫画爬取分析系统。随着数字漫画产业的快速发展,该系统利用Python高效爬取漫画数据(包括题材、评分等),并通过数据分析技术提供热度趋势、风格聚类等可视化洞察。系统功能包括管理员模块(数据爬取、词云分析、图表展示等),采用MySQL数据库和Vue.js前端框架。核心代码展示了用户登录、注册等功能的实现,系统效果图呈现了数据分析界面。该项目为漫画产业提供数据支持,满足用户个性化推荐需求,推动漫画产业智能化发展。

qq_1262330535的博客 1087

python下载漫画

下载漫画的脚本身为漫画迷,一直想直接将漫画下载到电脑上看,于是就有这个python脚本。系统:Ubuntu 14.04 python版本:2.7.6 用到的python库有: os (操作系统接口的标准库,用于创建文件) sys (标准库,获取命令行参数) string (字符串操作的标准库,用于将字符串中的数值转换为整型) getopt (对命令行参数进行处理) lxml (当中的html,相

cceking的博客 4308
上一篇: 帮铁粉脱单|【上海女】No.24|93年,硕士,喜欢刷英剧撸狗,互联网公司工作
下一篇: 情人眼里出西施,我用Python帮你搞定了!
菜鸟学Python
博客等级 码龄9年 8086粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值