首页
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
5,081 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
4,485 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
3,252 阅读
4
几个常见的密码字典推荐
2,630 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
2,566 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
登录
Search
标签搜索
Windows渗透
域渗透
HackMyVm
CyberStrikeLab靶场
内网渗透
渗透测试
网络安全
Web安全
cyberstrikelab
OSCP
SQL注入
WAF绕过
信息收集
渗透工具
靶场
靶场推荐
MSF
ThinkPHP漏洞
Vulfocus
vulnhub
泷羽Sec
累计撰写
185
篇文章
累计收到
3
条评论
首页
导航
泷羽收录
文章合集
OSCP打靶
渗透学习
渗透工具
搜索到
2
篇与
的结果
2026-06-25
Python很慢?这十个方法让你的代码执行速度提升3倍!
前言Python,作为一种动态类型的解释性语言,确实在执行速度上可能不如C这样的静态类型的编译语言。但是,通过一些技巧和策略,我们可以显著提升Python代码的性能。本文将探讨如何通过优化方法使Python代码运行得更快、更高效。我们将利用Python的timeit模块来精确测量代码的执行时间。注意:timeit模块在默认情况下会重复执行代码一百万次,以确保测量结果的准确性和稳定性def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': # 执行print_hi('PyCharm')方法 t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("PyCharm")') t.timeit()如何计算python脚本的运行时间呢?在time模块中time.perf_counter()提供了一个高精度的计时器,适合测量短时间,例如import time # 记录程序开始时间 start_time = time.perf_counter() # 你的代码逻辑 # ... # 记录程序结束时间 end_time = time.perf_counter() # 计算程序运行时间 run_time = end_time - start_time print(f"程序运行时间:{run_time} 秒")介绍一、I/O密集型操作I/O密集型操作(Input/Output Intensive Operation)指的是那些在执行过程中,大部分时间都花在等待输入/输出操作完成的程序或任务。I/O操作包括从磁盘读取数据、写入数据到磁盘、网络通信等。这些操作通常涉及到硬件设备,因此它们的执行速度受到硬件性能和I/O带宽的限制。他们的特点有:\1. 等待时间:程序在执行I/O操作时,往往需要等待数据从外部设备传输到内存,或从内存传输到外部设备,这会导致程序的执行被阻塞。\2. CPU利用效率:由于I/O操作的等待时间,CPU在这段时间内可能处于空闲状态,导致CPU利用率不高。\3. 性能瓶颈:I/O操作的速度往往成为程序性能的瓶颈,尤其是在数据量大或传输速度慢的情况下。例如,使用I/O密集型操作print,运行一百万次import time import timeit def print_hi(name): print(f'Hi, {name}') return if __name__ == '__main__': start_time = time.perf_counter() # 执行print_hi('PyCharm')方法 t = timeit.Timer(setup='from __main__ import print_hi', stmt='print_hi("PyCharm")') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间:{run_time} 秒")运行结果为3s而不使用i/o操作执行一个方法,即调用这个print_hi('xxxx')空方法,不使用print(),程序明显快了不少def print_hi(name): # print(f'Hi, {name}') return如果代码中必要的时候,例如文件读写,可以使用如下方法提高效率异步I/O:使用异步编程模式例如asyncio,允许程序在等待I/O操作完成时继续执行其他任务,从而提高CPU利用率。缓冲:使用缓冲区暂存数据,减少I/O操作的频率。并行处理:并行执行多个I/O操作,以提高整体的数据处理速度。优化数据结构:选择合适的数据结构,减少数据的读取和写入次数。二、使用生成器生成列表、字典在Python 2.7及其后续版本中,引入了对列表、字典和集合生成器的改进,这些改进让数据结构的构建过程更加简明和高效。1、传统方法def fun1(): list=[] for i in range(100): list.append(i) if __name__ == '__main__': start_time = time.perf_counter() t = timeit.Timer(setup='from __main__ import fun1', stmt='fun1()') t.timeit() end_time = time.perf_counter() run_time = end_time - start_time print(f"程序运行时间:{run_time} 秒") # 输出结果:程序运行时间:3.3872999000595883 秒2、使用生成器优化代码注:为了方便以下内容皆省略主函数main的代码部分def fun1(): list=[ i for i in range(100)] # 程序运行时间:2.1053185999626294 秒从上述的推导式程序中可以看出,除了理解更简洁、更容易阅读之外,它也更快。这使得此方法成为生成列表和循环的首选方法。三、避免字符串连接,使用join()join() 是一个字符串方法,在Python中用于将序列中的元素连接(或拼接)成一个字符串,通常使用特定的分隔符。他的优点通常为:\1. 效率高:join() 是连接字符串的高效方法,尤其是当处理大量字符串时,它通常比使用 + 操作符或 % 格式化更快,在连接大量字符串时,join() 方法通常比逐个连接更节省内存。\2. 简洁性:join() 使得代码更加简洁,避免了重复的字符串连接操作。\3. 灵活性:可以指定任何字符串作为分隔符,这为字符串拼接提供了极大的灵活性。\4. 广泛的用途:不仅可以用于字符串,还可以用于列表、元组等序列类型,只要元素可以被转换成字符串。举例:def fun1(): obj=['hellow','my','name','is','xiaoyu','!'] s="" for i in obj: s+=i # 程序运行时间:0.3610708999913186 秒使用 join() 来实现字符串拼接:def fun1(): obj=['hellow','my','name','is','xiaoyu','!'] "".join(obj) # 程序运行时间:0.18804279994219542 秒使用join()将函数的执行时间从0.36秒减少到0.18秒。四、使用Map代替循环在多数场景中,传统的for循环可以被更为高效的map()函数所替代。map()*是一个Python内置的*高阶函数,它能够将指定的函数应用于各种可迭代的数据结构,如列表、元组或字符串。使用map()的主要优势在于,它提供了一种更为简洁且高效的数据处理方式,避免了编写显式的循环代码。传统的循环方式:def fun1(): arr=["hello", "my", "name", "is", "xiaoyu", "!"] new = [] for i in arr: new.append(i) # 程序运行时间:0.31288250000216067 秒使用map()函数做相同的功能:def fun2(x): return x def fun1(): arr=["hello", "my", "name", "is", "xiaoyu", "!"] map(fun2,arr) # 程序运行时间:0.18387670000083745 秒对比之后,使用map()节省了将近一半的时间,大大提升了运行效率五、选择正确的数据结构选用恰当的数据结构对提升Python代码的执行效率至关重要。各类数据结构都针对特定操作进行了优化,合理选择能够加速数据的检索、添加和移除过程,进而增强程序的整体运行效能。例如,判断容器内的元素的时候,字典的查找效率高于列表,但是是在大量数据的情况下,少量数据恰恰相反# 使用少量数据进行测试 def fun1(): arr=["hello", "my", "name", "is", "xiaoyu", "!"] 'hello' in arr 'my' in arr # 程序运行时间:0.11527379998005927 秒 def fun1(): arr={"hello", "my", "name", "is", "xiaoyu", "!"} 'hello' in arr 'my' in arr # 程序运行时间:0.17057139997836202 秒 # 使用 numpy 进行随机生成100个整数 def fun1(): nums = {i for i in np.random.randint(100, size=100)} 1 in nums # 程序运行时间:14.48330469999928 秒 def fun1(): nums = {i for i in np.random.randint(100, size=100)} 1 in nums # 程序运行时间:13.411826699972153 秒看到了在少量数据的情况下list执行效率是要大于dict的,但是在大量数据的情况下,dict的效率大于list如果有频繁的新增、删除操作,新增、删除的元素数量又很多时,list的效率不高。此时,应该考虑使用collections.deque。collections.deque是双端队列,同时具备栈和队列的特性,能够在两端进行 O(1)复杂度的插入和删除操作。collections.deque的使用from collections import deque def fun1(): arr=deque()# 创建一个空的deque for i in range(1000000): arr.append(i) # 程序运行时间:0.05507110000002058 秒 def fun1(): arr=[] for i in range(1000000): arr.append(i) # 程序运行时间:0.06128990000001977 秒list的查找操作也非常耗时。当需要在list频繁查找某些元素,或频繁有序访问这些元素时,可以使用bisect维护list对象有序并在其中进行二分查找,提升查找的效率。六、避免不必要的函数调用在Python编程中,优化函数调用次数对于提升代码效率至关重要。过多的函数调用不仅增加了开销,还可能消耗额外的内存,从而拖慢程序的运行速度。为了提升性能,我们应尽量减少不必要的函数调用,并尝试将多个操作合并成一个,以此来减少执行时间和资源消耗。这样的优化策略有助于我们编写更高效、更快速的代码。七、避免不必要的import虽然Python的import语句相对较快,但每个import都会涉及到查找模块、执行模块代码(如果还没有被执行过)、并将模块对象放入到当前命名空间中。这些操作都需要一定的时间和内存。当你不必要地导入模块时,就会增加这些开销。八、避免使用全局变量import math size=10000 def fun1(): for i in range(size): for j in range(size): z = math.sqrt(i) + math.sqrt(j) # 程序运行时间:15.630933800013736 许多程序员刚开始会用 Python 语言写一些简单的脚本,当编写脚本时,通常习惯了直接将其写为全局变量,例如上面的代码。但是,由于全局变量和局部变量实现方式不同,定义在全局范围内的代码运行速度会比定义在函数中的慢不少。通过将脚本语句放入到函数中,通常可带来 15% - 30% 的速度提升。import math def fun1(): size = 10000 for i in range(size): for j in range(size): z = math.sqrt(i) + math.sqrt(j) # 程序运行时间:14.933845699997619 秒九、避免模块和函数属性访问import math # 不推荐写法 def fun2(size: int): result = [] for i in range(size): result.append(math.sqrt(i)) return result def fun1(): size = 10000 for _ in range(size): result = fun2(size) # 程序运行时间:10.154493000009097 秒每次使用.(属性访问操作符时)会触发特定的方法,如__getattribute__()和__getattr__(),这些方法会进行字典操作,因此会带来额外的时间开销。通过from import语句,可以消除属性访问。from math import sqrt # 推荐写法:用到哪个模块就导哪个模块 def fun2(size: int): result = [] for i in range(size): result.append(sqrt(i)) return result def fun1(): size = 10000 for _ in range(size): result = fun2(size) # 程序运行时间:8.960758000030182 秒十、减少内层for循环的计算import math def fun1(): size = 10000 sqrt = math.sqrt for x in range(size): for y in range(size): z = sqrt(x) + sqrt(y) # sqrt() 求非负实数的平方根 # 程序运行时间:14.267008299939334 秒在上面代码中sqrt(x)位于内测for循环,每次循环都会重新计算,增加不必要的时间开销import math def fun1(): size = 10000 sqrt = math.sqrt for x in range(size): sqrt_x=sqrt(x) # 在外层for循环进行计算 for y in range(size): z = sqrt_x + sqrt(y) # 程序运行时间:8.499037600005977 秒总结通过这些方法,我们可以有效地提高Python代码的性能,使其在处理复杂任务时更加快速和高效。记住,性能优化是一个持续的过程,需要根据具体情况不断调整和改进,python运行速度的优化方法不限于以上方法,还有很多,如有大佬路过,请多指教。
2026年06月25日
0 阅读
0 评论
0 点赞
2026-06-19
阿里云 vs 腾讯云综合对比,服务器选购方案
基于实际价格数据的全方位分析,帮你选到最适合的云服务器一、前言很多师傅们第一次买服务器都踩坑了,要么买贵了,要么配置不够用,要么续费时价格翻倍。我做站两三年了,前前后后用过阿里云、腾讯云、京东云等多家云服务商,618大促是每年最适合囤服务器的时候,但各家活动规则复杂,一不小心就可能错过真正的优惠。比如我用500块买了3年的腾讯云4H4G轻量云服务器下面是真实地订单信息免费升配4H4G 3年我的话主要就是用来日常学习,比如AI,自动渗透,自动化相关等等这篇文章,我会基于从官方真实价格数据,帮你搞清楚:阿里云和腾讯云的618活动,到底哪家更适合你?1、预算极低选阿里云(38元/年)2、追求高配低价选腾讯云(4核4G仅99元/年)3、长期使用看阿里云"99"计划(续费同价)4、海外业务两家都有优势线路若闲文章内容长可以复制下方链接打开表格信息自行对比,其中包含阿里云和腾讯云的各种配置表,日常价格表,活动价格表等等,非常的详细,总共花了我几天时间做出来,都是基于官方真实数据表格链接https://my.feishu.cn/docx/C1LZdMesKo6pkfxJmpycN0WAnIg 手机端扫码访问示例,阿里云ESC表阿里云618活动阿里云轻量价格配置表阿里云区域配置对比表腾讯云CVM价格配置表腾讯云轻量服务器价格配置表腾讯云618活动表二、选购云服务器的4个核心指标在对比具体价格前,先搞清楚这几个关键指标,避免被低价套路忽悠:1. CPU和内存CPU决定计算能力,内存决定能同时处理多少任务。个人博客2核2G足够,小型电商网站建议4核4G起步,数据库应用需要更大内存。2. 带宽和流量带宽决定访问速度,流量决定能承载多少访客。阿里云轻量服务器主打200Mbps峰值带宽(无固定流量限制),腾讯云轻量服务器按套餐提供月流量包(如3M带宽+30GB/月流量)。根据你的访客量选择: 日均1000IP以下:3M带宽够用 日均1万IP以上:建议5M以上或选择不限流量方案 3. 系统盘类型SSD云盘比普通云盘读写速度快很多,数据库应用必须选SSD。两家618活动的主力机型都配了SSD,这点不用担心。4. 续费价格这是最容易踩坑的地方! 很多低价只是首年优惠,续费时恢复原价甚至更贵。阿里云的"99"计划主打新购续费同价,腾讯云部分产品支持续费3.5折起。长期使用一定要算总成本,不能只看首年价格。三、618活动核心价格对比我从官方表格中提取了最具代表性的配置进行对比(均为年付价格): 配置 阿里云 腾讯云 推荐场景 2核2G(入门) 38元/年(抢购价) 168元/年(2核2G4M) 个人博客、学习测试 4核4G(主力) 活动专享价(ECS e实例) 99元/年(超级爆款) 中小企业官网、电商 2核4G5M(高性能) SWAS 200Mbps带宽方案 188元/年(爆款) 中型网站、APP后端 💡 小结:入门级阿里云更便宜(38元 vs 168元),但中高配腾讯云性价比更高(4核4G仅99元)。阿里云的优势在于200Mbps大带宽,适合流量波动大的场景;腾讯云的优势在于明确的流量包制度,成本更可控。四、阿里云 vs 腾讯云1. 活动力度对比阿里云:新客首单低至38元/年,每日10:00和15:00两场限时抢购,"99"计划新购续费同价,ECS/OSS/RDS等全系列99元起腾讯云:轻量服务器4核4G爆款99元/年(1.3折),蜂驰型BF1系列2.7折起,领券最高省6440元,支持最长5年付(2.7折/新客2.5折)2. 产品线对比阿里云轻量服务器(SWAS):全部标配200Mbps BGP大带宽,无固定流量限制,通用型/CPU优化型/多公网IP型/国际型/容量型五大系列,覆盖全球24+地域腾讯云轻量服务器:,按套餐月流量包制,场景化套餐丰富(通用型/电商型/游戏型/AI型/存储型/视频型/企业型),618爆款4核4G仅99元腾讯云CVM:实例选择更丰富,标准型S5/AMD标准型SA9/蜂驰型BF1/内存型MA9等多个系列,年付6.4折,5年付低至2.7折3. 长期使用成本对比这是两家最大的差异点。阿里云"99"计划:主打新购续费同价,购买时多少钱,以后续费还是多少钱,不用担心涨价风险腾讯云:首年价格更低,续费政策需要仔细确认,部分产品支持续费3.5折起成本测算示例(3年使用): 阿里云:99元/年 × 3年 = 297元 腾讯云:99元首年 + 续费原价 × 2年 ≈ 99 + 780 × 2 = 1659元(需确认具体续费折扣) 💡 结论:长期用阿里云可能更划算,短期用(1-2年)腾讯云更便宜。4. 海外业务对比阿里云:覆盖全球24+地域、含法兰克福、伦敦等欧洲节点,海外月付38-42元,略高于国内腾讯云:境外轻量服务器2核4G30M仅199元/年(首尔/东京/香港/新加坡),30Mbps大带宽不限流量,性价比突出5. 特色功能对比阿里云独有:无影云电脑99元起(企业级云桌面),云大使推荐返现最高5万(返利25%)腾讯云独有:蜂驰型BF1全新实例(2.7折起),大模型TokenHub 28元/月起(混元/GLM/DeepSeek),续费后免费升配至4核4G,5天无理由退款五、不同需求怎么选?根据你的具体需求,我整理了最实用的选购建议:1、个人学习/极低预算(学生党)推荐阿里云轻量服务器,38元/年是目前全网最低入门价。虽然配置只有2核2G,但足够用来学习Linux、搭建个人博客、跑一些轻量级应用。学生认证还有额外优惠。2、中小企业官网/电商网站推荐腾讯云轻量服务器4核4G,618爆款价99元/年,性价比极高。4核CPU+4G内存足够支撑日均5000-10000IP的访问量,3M带宽+30GB月流量对大多数企业站够用。3、跨境电商/外贸网站两家都有优势: 阿里云:国际型覆盖地域更广(24+),适合需要欧洲节点的业务 腾讯云:境外轻量服务器2核4G30M仅199元/年,30Mbps大带宽不限流量,性价比更高 如果你的客户主要在东南亚,腾讯云的香港/新加坡节点更划算。4、长期使用(3-5年)推荐阿里云"99"计划,新购续费同价,不用担心续费涨价。如果你确定要用5年以上,腾讯云5年付2.7折(新客2.5折)也值得考虑,总成本可能更低,但需要一次性投入更多。5、AI/大模型应用推荐腾讯云。618期间GPU云服务器低至0.8折,大模型TokenHub 28元/月起(支持混元/GLM/DeepSeek等主流模型),AI生态更完整。阿里云也有AI相关产品,但腾讯云在AI领域的优惠力度更大。六、注意点1、新客定义:两家都要求"从未购买过该产品的账号",同一身份证/企业主体可能被判定为老用户2、抢购时间:阿里云每日10:00和15:00两场限时抢购,热门配置容易秒光,建议提前登录账号3、续费政策:下单前务必确认续费价格,阿里云"99"计划明确续费同价,腾讯云部分产品续费3.5折起但需具体确认4、流量限制:腾讯云轻量服务器按月流量包计费,超出部分可能额外收费;阿里云SWAS主打200Mbps峰值带宽,更适合流量波动大的场景5、退款政策:腾讯云支持5天无理由退款,阿里云退款政策相对严格,建议确认后再下单七、总结最后总结一下选购口诀: ✅ 预算极低选阿里云(38元/年入门) ✅ 追求高配低价选腾讯云(4核4G仅99元/年) ✅ 长期使用看阿里云"99"计划(续费同价) ✅ 海外业务两家都有优势线路,根据具体地域选择 ✅ AI应用优先考虑腾讯云(GPU优惠+大模型生态) 最后附上云服务器配置表地址(真的很详细了,吃奶的时间都用上了)https://my.feishu.cn/docx/C1LZdMesKo6pkfxJmpycN0WAnIg 手机端扫码访问💡 以上链接都是官方活动入口,比你自己在官网找更方便。如果你还有其他选购问题,比如具体配置怎么选、备案流程怎么走,可以评论区问我,我看到会回复。
2026年06月19日
405 阅读
0 评论
0 点赞