位置: IT常识 - 正文

使用多线程让Python应用飞起来(多线程并发python)

编辑:rootadmin

推荐整理分享使用多线程让Python应用飞起来(多线程并发python),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:多线程并发python,python多线程能并行吗,多线程调用,多线程应用场景python,python多线程能提高效率吗,多线程应用场景python,多线程调用,多线程编程python,内容如对您有帮助,希望把文章链接给更多的朋友!

很多时候,我们最终在Python中编写代码来执行远程请求或读取多个文件或对某些数据进行处理。在很多这种情况下,我看到程序员使用一个简单的程序员for loop,需要永远完成执行。例如:

importrequestsfromtimeimporttimeurl_list=["https://via.placeholder.com/400","https://via.placeholder.com/410","https://via.placeholder.com/420","https://via.placeholder.com/430","https://via.placeholder.com/440","https://via.placeholder.com/450","https://via.placeholder.com/460","https://via.placeholder.com/470","https://via.placeholder.com/480","https://via.placeholder.com/490","https://via.placeholder.com/500","https://via.placeholder.com/510","https://via.placeholder.com/520","https://via.placeholder.com/530",]defdownload_file(url):html=requests.get(url,stream=True)returnhtml.status_codestart=time()forurlinurl_list:print(download_file(url))print(f'Timetaken:{time()-start}')

Output:

<--truncated-->Timetaken:4.128157138824463使用多线程让Python应用飞起来(多线程并发python)

这是一个理智的示例,代码将打开每个URL,等待它加载,打印其状态代码,然后转到下一个URL。这种代码非常适合多线程。

现代系统可以运行大量线程,这意味着您可以使用非常低的开销一次完成多个任务。为什么我们不尝试使用它来使上述代码更快地处理这些URL?

我们将利用ThreadPoolExecutor从concurrent.futures库。它非常易于使用。让我向您展示一些代码,然后解释它是如何工作的。

importrequestsfromconcurrent.futuresimportThreadPoolExecutor,as_completedfromtimeimporttimeurl_list=["https://via.placeholder.com/400","https://via.placeholder.com/410","https://via.placeholder.com/420","https://via.placeholder.com/430","https://via.placeholder.com/440","https://via.placeholder.com/450","https://via.placeholder.com/460","https://via.placeholder.com/470","https://via.placeholder.com/480","https://via.placeholder.com/490","https://via.placeholder.com/500","https://via.placeholder.com/510","https://via.placeholder.com/520","https://via.placeholder.com/530",]defdownload_file(url):html=requests.get(url,stream=True)returnhtml.status_codestart=time()processes=[]withThreadPoolExecutor(max_workers=10)asexecutor:forurlinurl_list:processes.append(executor.submit(download_file,url))fortaskinas_completed(processes):print(task.result())print(f'Timetaken:{time()-start}')

Output:

<--truncated-->Timetaken:0.4583399295806885

我们的代码加速了近9倍!我们甚至没有做任何超级参与。如果有更多网址,性能优势会更高。

那么发生了什么?当我们调用时,executor.submit 我们正在向线程池添加新任务。我们将该任务存储在进程列表中。稍后我们迭代过程并打印出结果。

该as_completed方法在完成后立即从进程列表中生成项(任务)。任务可以进入完成状态有两个原因。它已完成执行或已取消。我们也可以传入一个timeout参数as_completed,如果任务花费的时间超过了那个时间段,那么as_completed就会产生这个任务。

本文链接地址:https://www.jiuchutong.com/zhishi/304519.html 转载请保留说明!

上一篇:Discuz主题浏览量实现原理和不更新的解决方案(discuz 首页设置)

下一篇:phpcms会员登录失败(phpcms v9用户手册)

  • OPPO Ace2闪充功率是多少呢(oppoace闪充协议)

    OPPO Ace2闪充功率是多少呢(oppoace闪充协议)

  • vivos6前置摄像头是多少像素(vivo手机前置摄像头不清楚)

    vivos6前置摄像头是多少像素(vivo手机前置摄像头不清楚)

  • 荣耀30pro有双扬声器吗(荣耀30pro+双扬声器是对称双扬吗)

    荣耀30pro有双扬声器吗(荣耀30pro+双扬声器是对称双扬吗)

  • 微信聊天怎么回复特定一句话(微信聊天怎么回车下一行)

    微信聊天怎么回复特定一句话(微信聊天怎么回车下一行)

  • 无线键盘复位键在哪(无线键盘复位键在哪个位置?)

    无线键盘复位键在哪(无线键盘复位键在哪个位置?)

  • 5g手机连接wifi会更快吗(5g手机连接wifi影响网速吗)

    5g手机连接wifi会更快吗(5g手机连接wifi影响网速吗)

  • qq怎样取消性别(qq如何取消性别设置)

    qq怎样取消性别(qq如何取消性别设置)

  • 可以给siri改名吗(siri可以改名嘛)

    可以给siri改名吗(siri可以改名嘛)

  • 微信可以有几个账号(企业微信可以有几个)

    微信可以有几个账号(企业微信可以有几个)

  • 高德地图如何关闭hud模式(高德地图如何关闭新手模式)

    高德地图如何关闭hud模式(高德地图如何关闭新手模式)

  • 三星s9充不进去电一直震动(三星s9+充不进去电)

    三星s9充不进去电一直震动(三星s9+充不进去电)

  • 一键还原和重装系统有什么区别(一键还原和重装系统哪个效果好)

    一键还原和重装系统有什么区别(一键还原和重装系统哪个效果好)

  • 为什么苹果手机红色后面有product(为什么苹果手机屏幕亮度突然变暗)

    为什么苹果手机红色后面有product(为什么苹果手机屏幕亮度突然变暗)

  • oppo手机有没有语音唤醒功能(oppo手机有没有双系统功能)

    oppo手机有没有语音唤醒功能(oppo手机有没有双系统功能)

  • qq不能发闪照了吗(qq突然不能发闪照了)

    qq不能发闪照了吗(qq突然不能发闪照了)

  • 快手id和快手号的区别(快手的id号和快手号有什么区别)

    快手id和快手号的区别(快手的id号和快手号有什么区别)

  • 定位显示离线什么意思(定位手机显示离线怎么找回)

    定位显示离线什么意思(定位手机显示离线怎么找回)

  • 手机qq如何发送gif(手机QQ如何发送共享文档)

    手机qq如何发送gif(手机QQ如何发送共享文档)

  • 苹果8p多重(苹果8p多重量多少克)

    苹果8p多重(苹果8p多重量多少克)

  • uscc号码是什么(usci号码是什么意思)

    uscc号码是什么(usci号码是什么意思)

  • vivo手机的iQOO Pro 屏幕有多大(Vivo手机的恢复出厂设置在哪里)

    vivo手机的iQOO Pro 屏幕有多大(Vivo手机的恢复出厂设置在哪里)

  • 小米手环nfc用途(小米手环nfc用途是什么)

    小米手环nfc用途(小米手环nfc用途是什么)

  • 苹果备忘录怎么撤销(苹果备忘录怎么导出来长图文)

    苹果备忘录怎么撤销(苹果备忘录怎么导出来长图文)

  • 手机卡能不能定位(手机卡能不能定位追踪)

    手机卡能不能定位(手机卡能不能定位追踪)

  • jushed.exe是什么进程  jushed进程查询(.exe是什么程序)

    jushed.exe是什么进程 jushed进程查询(.exe是什么程序)

  • 税友财务软件一年多少钱
  • 个人报销电话费怎么做分录
  • 其他应收款属于应收账款吗
  • 关联交易金额是付款还是入账
  • 通行费 发票
  • 商贸公司可以做美容行业吗?
  • 发生费用是什么意思
  • 房产企业因资金问题退市
  • 会议费怎么做会计分录
  • 企业卖旧房如何计算缴纳土地增值税
  • 购入固定资产如何摊销
  • 固定资产盘亏账务处理例题
  • 五证一户什么意思
  • 销项税额抵减是怎么回事
  • 产品售后维修费分录
  • 企业处理二手车增值税没交,有什么影响
  • 航天信息服务费280元会计处理
  • 公司购买汽车的购置税怎么做账
  • 质保金怎么挂账
  • win10如何设置声音
  • 权益法分红的会计分录
  • 超市的成功秘诀
  • 如何查询苹果手机充电次数
  • 做汽车配件销售怎么找客户
  • 公交车的乘车凭证能报销吗
  • win10设置闹钟
  • 房地产企业前期物业费
  • Win10电脑重装系统要多少钱
  • 芦荟的功效与作用治什么病
  • PHP:php_check_syntax()的用法_misc函数
  • wamp设置
  • 培训类产品
  • laravel搭建
  • yii框架运行原理
  • 增值税发票月度统计
  • 微服务架构java框架
  • 机械干租和湿租的税率
  • html中a标签怎么引用图片
  • 波尔图葡萄牙语
  • datetime2(7)
  • 搭建本地yum
  • 帝国cms扣除会员怎么办
  • 织梦如何采集文章
  • 其他应收款怎么冲平会计分录
  • 以前年度的企业所得税怎么入账
  • 审计外聘人员支付标准
  • 公司之间往来款需要交税吗
  • mysql中游标的作用
  • sql server数据库设置定时任务
  • 开专票还是开发票
  • 补发以前年度工资怎么做账
  • 预算会计与企业会计的区别感悟
  • 什么是商业汇票,其种类有哪些
  • 设计服务内容是什么
  • 出纳属于会计岗位职责吗
  • 个人所得税手续费返还政策文件
  • 差额征税发票可以税前扣除吗
  • 进项已抵扣,退货发票怎么处理
  • 预缴所得税年底怎么算
  • 环境检测费属于什么费用
  • 固定资产的特点有哪几个
  • 联营企业和子公司哪个好
  • 利得与损失的四种类型
  • sqlserver 教程
  • windows跳转列表是什么
  • win10系统无法打开这个应用
  • xp系统怎么弄成win7
  • ubuntu fsl
  • macos睡眠
  • win7系统安装程序无法创建新的系统分区
  • Win10 Mobile/WP8.1优秀专业摄影应用OneShot本周再次更新:修复Bug和优化性能
  • ubuntu怎么设置成中文
  • linux crontab用法
  • WIN7系统屏幕亮度哪里设置
  • node.js详解
  • python的pip安装命令
  • pm2启动nodejs
  • js鼠标滑动特效
  • jquery代码实例
  • 关税税率表包括哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设