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

  • 数据库管理系统所支持的传统数据模型有(数据库管理系统应具备的功能不包括)

    数据库管理系统所支持的传统数据模型有(数据库管理系统应具备的功能不包括)

  • 网易云的背景怎么换(网易云的背景怎么变成默认)

    网易云的背景怎么换(网易云的背景怎么变成默认)

  • 电脑上怎么下载视频(电脑上怎么下载歌曲到u盘)

    电脑上怎么下载视频(电脑上怎么下载歌曲到u盘)

  • 怎么12123付款页面空白(12123支付页面)

    怎么12123付款页面空白(12123支付页面)

  • 放久的电脑开机无法显示(放久的电脑开不了机)

    放久的电脑开机无法显示(放久的电脑开不了机)

  • 安装驱动器读取失败是怎么回事(安装驱动器读取失败有可能是主板问题吗?)

    安装驱动器读取失败是怎么回事(安装驱动器读取失败有可能是主板问题吗?)

  • 腾讯绿钻豪华版是什么(腾讯绿钻豪华版是干嘛用的)

    腾讯绿钻豪华版是什么(腾讯绿钻豪华版是干嘛用的)

  • 光刻机7nm指的是什么(光刻机7nm什么意思指的是什么)

    光刻机7nm指的是什么(光刻机7nm什么意思指的是什么)

  • 华为新建指纹无法录入(华为新建指纹无法识别)

    华为新建指纹无法录入(华为新建指纹无法识别)

  • 条码阅读器是输入设备还是输出设备(条码阅读器工作原理)

    条码阅读器是输入设备还是输出设备(条码阅读器工作原理)

  • 低系统苹果六怎么录屏(低系统苹果六怎么升级)

    低系统苹果六怎么录屏(低系统苹果六怎么升级)

  • 在internet上广泛使用的www是一种什么(在internet应用最广泛的服务)

    在internet上广泛使用的www是一种什么(在internet应用最广泛的服务)

  • 3000mbps是多少兆(3000mbps是多少兆宽带)

    3000mbps是多少兆(3000mbps是多少兆宽带)

  • 为什么ipad下载不了app(为什么ipad下载软件显示不兼容)

    为什么ipad下载不了app(为什么ipad下载软件显示不兼容)

  • ipad air3支持pd快充吗(ipadair3可以用快充吗)

    ipad air3支持pd快充吗(ipadair3可以用快充吗)

  • 拼多多的免拼是什么意思(拼多多的免拼是怎么回事)

    拼多多的免拼是什么意思(拼多多的免拼是怎么回事)

  • 咸鱼违规一般冻结多久(违反闲鱼规则账号被冻结)

    咸鱼违规一般冻结多久(违反闲鱼规则账号被冻结)

  • AirPods Pro怎么更新固件(airpods pro怎么更改绑定ID)

    AirPods Pro怎么更新固件(airpods pro怎么更改绑定ID)

  • 抖音申请注销要多久才能完全注销(抖音申请注销要多久)

    抖音申请注销要多久才能完全注销(抖音申请注销要多久)

  • 苹果手机闪付功能在哪(苹果手机闪付功能在哪操作)

    苹果手机闪付功能在哪(苹果手机闪付功能在哪操作)

  • 怎么看网线是不是光纤(怎么看网线是不是断了)

    怎么看网线是不是光纤(怎么看网线是不是断了)

  • 苹果输入法标点符号在哪(苹果输入法标点符号快捷键)

    苹果输入法标点符号在哪(苹果输入法标点符号快捷键)

  • 小度在家没网络能用吗(小度今天没有网络)

    小度在家没网络能用吗(小度今天没有网络)

  • 一品红怎么养(图文)(一品红怎么养才长得好)

    一品红怎么养(图文)(一品红怎么养才长得好)

  • 《web应用技术》学习规划日程表(web应用技术是什么)

    《web应用技术》学习规划日程表(web应用技术是什么)

  • 织梦CMS怎么样在位置导航中的“主页”换成英文(织梦怎么安装)

    织梦CMS怎么样在位置导航中的“主页”换成英文(织梦怎么安装)

  • 进项留抵转出会计分录
  • 什么是节税?
  • 事业单位无形资产摊销年限
  • 改签费可以进项转出吗
  • 漏缴的印花税如何补交
  • 外购软件用于销售的会计分录
  • 房地产开发企业的土地使用权计入哪里
  • 新增土地和新增货值
  • 盘盈固定资产属于企业的会计差错
  • 年度汇算清缴需要注意的项目
  • 抵押贷款合同印花税怎么算
  • 个人承包经营所得是什么意思
  • 委托企业和受托企业是什么意思
  • 销售产品结转成本怎么算
  • 上期留抵税额计算
  • 公司房租可以抵多少税
  • 开发项目未竣工前土地使用税怎么缴纳
  • 出口发票上的汇率按哪个开?
  • macos12支持设备
  • 华为授权查询系统
  • 工程项目发包是什么意思
  • 显示器屏幕抖动闪烁是什么原因
  • 怎么绕开中介找到房主
  • 债务重组法律服务方案
  • 生产性生物资产和消耗性生物资产有什么区别
  • php怎么与mysql连接
  • yii框架运行原理
  • laravel php
  • html在线小游戏
  • php remote_addr
  • quota命令 显示磁盘已使用的空间与限制
  • 存在现金折扣的会计核算
  • 推荐几个比较好用的
  • 拍卖抵押车 卖不出去怎么办
  • 短期借款利息有可能资本化处理,也可能费用化处理
  • 矿产资源补偿费计入税金及附加吗
  • java自增自减运算符的规则
  • 收入和成本的原则是什么
  • 资金账簿印花税按年还是按次
  • 银行汇票用什么会计分录
  • linux中备份
  • 确认销售收入时不影响应收账款入账金额的是
  • 国企注册资本实缴
  • 多计的人工成本怎么做账
  • 公司贷款手续如何办理流程
  • 企业向福利院捐款属于 公共关系
  • 贷款保险费能否抵扣个税
  • 税控设备管理办法
  • 多收钱退回去咋说
  • 房租费计提如何入账
  • 建筑企业其他业务收入范围
  • mssql server 2012(SQL2012)各版本功能对比
  • mysql macbook安装教程
  • mysql 加锁处理分析
  • MySQL数据库同时查询更新同一张表的方法
  • 数据库聚簇索引和非聚簇索引
  • 批量sql语句
  • win2003控制面板在哪里打开
  • http500内部错误
  • xp系统要求
  • 苹果电脑mac设备怎么删除
  • linux怎样安装
  • m0b0player播放器
  • windowsxp资源管理器在哪里
  • win10改服务器
  • windows8无线网络
  • linux tar -czvf
  • [置顶]bilinovel
  • perl中的$_
  • perl计算时间差
  • angularjs定义全局变量
  • unity ui图层
  • python第三方库文档怎么看
  • New AssetBundle build system in Unity 5.0
  • javascript的代码写在哪里
  • js中new一个函数
  • jQuery+ajax+asp.net获取Json值的方法
  • 国家税务系统
  • 海珠税务局许丰
  • 提高增值税税率是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设