位置: 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用户手册)

  • 这些中国式营销词汇正在逐步退出(中国式营销的合理性)

    这些中国式营销词汇正在逐步退出(中国式营销的合理性)

  • 微信发朋友圈的视频模糊怎么办(微信发朋友圈的标签怎么删除)

    微信发朋友圈的视频模糊怎么办(微信发朋友圈的标签怎么删除)

  • 电脑正在更新怎么取消(电脑正在更新怎么取消让他开机)

    电脑正在更新怎么取消(电脑正在更新怎么取消让他开机)

  • wps如何设置打印区域(wps如何设置打印纸张大小)

    wps如何设置打印区域(wps如何设置打印纸张大小)

  • 手机响但是没有看见有什么通知(手机响但是没有铃声)

    手机响但是没有看见有什么通知(手机响但是没有铃声)

  • 华为手机锁屏页面时间怎么设置(华为手机锁屏页面上的时间怎么设置)

    华为手机锁屏页面时间怎么设置(华为手机锁屏页面上的时间怎么设置)

  • 移动硬盘无法弹出怎么办(移动硬盘无法弹出关机可以拔吗)

    移动硬盘无法弹出怎么办(移动硬盘无法弹出关机可以拔吗)

  • 苹果相册最近删除删了还能恢复吗(苹果相册最近删除面容解锁怎么关闭)

    苹果相册最近删除删了还能恢复吗(苹果相册最近删除面容解锁怎么关闭)

  • vivox30pro是不是曲面屏(vivox30pro是什么手机)

    vivox30pro是不是曲面屏(vivox30pro是什么手机)

  • 华为cra一cl00是什么型号(华为crrcl00多少钱)

    华为cra一cl00是什么型号(华为crrcl00多少钱)

  • 投屏要流量吗(投屏需不需要流量)

    投屏要流量吗(投屏需不需要流量)

  • 抖音禁止播放需要几天(抖音现已做禁止播放处理)

    抖音禁止播放需要几天(抖音现已做禁止播放处理)

  • 抖音视频收藏怎么删除(抖音视频收藏怎样转入相册)

    抖音视频收藏怎么删除(抖音视频收藏怎样转入相册)

  • 电脑显示设置怎么恢复(电脑显示设置怎么找)

    电脑显示设置怎么恢复(电脑显示设置怎么找)

  • 苹果11起售时间(苹果11正式开卖时间)

    苹果11起售时间(苹果11正式开卖时间)

  • 小米全屏手机返回键在哪(小米手机怎么把全面屏手机的返回键调整位置)

    小米全屏手机返回键在哪(小米手机怎么把全面屏手机的返回键调整位置)

  • 实名制微信封号影响信誉么(实名制微信封号影响什么)

    实名制微信封号影响信誉么(实名制微信封号影响什么)

  • 运费险在支付宝哪里看(运费险在支付宝哪里领取)

    运费险在支付宝哪里看(运费险在支付宝哪里领取)

  • 华为手机管控中心在哪(华为手机管控中心解除后的应用)

    华为手机管控中心在哪(华为手机管控中心解除后的应用)

  • 苹果7 plus支持无线充电吗(苹果7 plus带不带无线充电)

    苹果7 plus支持无线充电吗(苹果7 plus带不带无线充电)

  • x27通话录音在哪里(x27手机电话录音在哪)

    x27通话录音在哪里(x27手机电话录音在哪)

  • bios如何设置光驱启动顺序?三种BIOS设置光驱第一启动的方法详细图解(bios如何设置光盘启动项)

    bios如何设置光驱启动顺序?三种BIOS设置光驱第一启动的方法详细图解(bios如何设置光盘启动项)

  • 网络游戏架构的前世今生——网关(游戏的系统架构)

    网络游戏架构的前世今生——网关(游戏的系统架构)

  • DEFORMABLE DETR详解(deformable detr代码)

    DEFORMABLE DETR详解(deformable detr代码)

  • 一季度季初从业人数
  • 小规模纳税人免税账务处理
  • 主税零申报附加税怎样申报
  • 年金个税税率表
  • 代缴五险一金自己还需要缴纳吗
  • 划转税务的非税收入2023
  • 一般存款账户的主要用途
  • 给非企业员工佣金怎么交税
  • 会员充值赠送
  • 房地产开发企业预缴增值税
  • 公司法人信息变更是先去税务局还是先去银行
  • 营改增后建筑施工税率调整变化
  • 行政诉讼的适用情况
  • 高新技术企业如何融资
  • 劳务票一般开几个点
  • 酒生产车间
  • 未达起征点纳税申报表怎么填
  • 增值税进项和销项税的计算方法
  • 会计明细账簿包括哪些
  • 软件许可协议是什么意思
  • 费用报销是先记账后付款还是先付款后记账
  • 只有原始凭证无入库单跟发票如何记账?
  • 净值在财务报表哪找
  • 支出税费
  • 印花税的征收项目
  • 工资一直计提但是未发有影响吗
  • 公司租的宿舍记什么科目
  • 代办营业执照费用大概多少
  • PHP:pg_fetch_object()的用法_PostgreSQL函数
  • 题管理录入新内容
  • 服务费可以暂估成本吗
  • laravel sqlserver
  • 帝国cms使用手册
  • 销售部门招待费用预算
  • 电子发票冲红后对方能查到吗
  • element表格表单
  • java hash()
  • 固定资产清理怎么报税呢
  • 小微企业和民营企业的区别
  • 小微企业利润表数据
  • 加计抵减可以结转吗
  • sql2008附加数据库
  • 电子税务局能不能逾期申报个税
  • 预算收入的退付范围
  • 出口退税申报系统自检数据撤销
  • 委托加工的相关法律规定
  • 黄金以旧换新工具有哪些
  • 先开收据再打款
  • 公司法人章财务章丢了怎么办
  • 小微企业a201010表怎么填
  • 营业费用这个科目还在用吗
  • 总公司中标分公司结算可以吗
  • 餐饮行业招聘方案
  • 关联交易定价方法包括
  • sqlserver的游标
  • win7系统设置打印机共享
  • bios和cmos的区别和联系
  • dwrg_repair.exe什么意思
  • win7系统IE浏览器一点就闪退
  • win7提示无法访问权限
  • win10edge浏览器下载被阻止
  • xp系统怎么和win7系统共享
  • linux文件系统inode
  • linux命名命令
  • scards32.exe - scards32是什么进程 有什么用
  • win7如何打开浏览器
  • linux怎么操作命令
  • unicode和utf–8 编码
  • python 读取数据库
  • 使用ssh登录远程服务器有两种方法
  • js判断页面是否跳出弹窗
  • 关于Air端与android端的通信实现
  • windows安装包下载
  • unity3d效果图
  • android studio 安装步骤
  • jquery的gt
  • 企业科研经费管理制度
  • 企业所得税年度申报时间
  • 扬州儿童社保卡
  • 广东省税务局网络不通
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设