| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 金融数据获取(二):多进程下的性能压力测试(下) -> 正文阅读 |
|
[开发测试]金融数据获取(二):多进程下的性能压力测试(下) |
摘要:?? 1:本文将采用多进程对计算机性能进行压力测试,最后勾勒出进程数量与效率间的关系; 2:本文是上期文章 "搭上多进程并行的高速路" 2.1的补充内容,文章链接:(74条消息) 金融数据获取(二):搭上多进程并行的高速路_simon1223z的博客-CSDN博客 3:开发环境选择了Pycharm,所有程序均基于python3.8; 4:本文依旧是基于干货的分享; ????????由于是补充内容,我们直接开门见山,在上一篇文章中笔者指出:”在电脑性能允许的范围下,进程数与爬取效率间大致呈现正相关关系,但随着进程数的递增将出现边际递减,到某个阶段超出电脑负荷时开始边际为负。” 本文将设置压力条件,通过一个简单的压力测试具体解答进程数量与效率间的关系,并且笔者将展示CPU与进程运行状态。 目录 一、前提条件1.1 主要硬件及软件条件????????由于电脑间性能差异很大,先设置好程序运行的前提条件以保证结果的准确性 ? ? ? ? 1):笔者使用自己的一台老爷机进行测试,主要配置如下:
? ? ? ?2): 程序运行前已经关闭大部分软件 ? ? ? ? ?3):网络通过无线400兆WiFi接入,网络状态稳定 1.2 压力条件????????为了勾勒出进程与效率间的关系,笔者打算从单进程一直测试到200进程,只要将上期文章中的代码进行遍历就可以达到该效果。毕竟要遍历很多次,这么长的运行时间笔者还希望将结果存进CSV中方便以后查看。 ? ? ? ? 于是对上期爬虫代码的主程序作出如下修改:
二、开始运行????????在只有单线程的状态下,可以看到CPU运行很轻松,中间出现的波峰系开启和关闭进程所致。 图一:单进程下CPU运行状态 ?????????继续遍历更多进程,当开启10个进程时,CPU开始出现大幅波动,图二中CPU利用率出现满载并且持续了一段时间,满载这段时间系开启和关闭进程所致。 图二:10进程下CPU运行状态 ??????????继续遍历,当进程数达到30个时,笔者发现CPU开始主动降频了,开启和关闭进程时不再满载运行,系进程数增多,CPU开启和关闭进程的时间拉长。 图三:30进程下CPU运行状态
?????????继续毫无人性的压榨,下图分别为43进程和60进程截图,可以明显看到,开启和关闭进程所消耗的时间继续增大,波谷时间持续变小。当达到80进程时CPU几乎完全处于不断开启和关闭进程的状态。 图四:43进程(上)、60进程(中)和80进程(下) ? ? ????????来一张夸张的180进程,实验进行到现在对这台脆弱的老爷机可以说是毫无人性了。 图五:180进程 ? ?????????当遍历到执行190+进程,电脑基本处于瓦特状态,笔者都不敢截图了,一碰怕脆弱的系统崩溃。。这里有意思的是资源监视器上显示只有196个进程在活动,难不成这时候只有一个进程在支持系统运行?显然CPU应该是在后台进行了调配,而笔者爬取到的也都变成了空列表,就暂时把它解释成处于崩溃边缘吧,有谁知道背后原理的也欢迎在文末留言。 图六:遍历195线程时? ????????程序运行结束,所有进程也都关闭了,电脑起死回生。同一时间笔者也拿到了CSV中的进程运行数据。 ? ????????? 三、分析与结论????????运行数据主要记录了线程运行时间及线程数量,将数据展示如图七所示。相比但进程的80几秒,多线程显著的提高了运行效率,但随着线程数的提高,运行效率的提高并不显著。在线程数超过60 后CPU的工作基本都在频繁开启和关闭进程,运行时间随着线程增加而线性增加,也可以说是此时的效率随线程的增加而线性递减。 ? ? ? ? 由此可见,只有合理运用多进程才能提高效率。 图七:线程数量(个)与运行时间(秒)散点分布 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/21 3:02:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |