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

  • word表格怎么单独加粗一条线 (word表格怎么单独调整单元格)

    word表格怎么单独加粗一条线 (word表格怎么单独调整单元格)

  • switch能插耳机吗(switch可以插耳机不)

    switch能插耳机吗(switch可以插耳机不)

  • adobe creative cloud有什么用(adobe creative cloud可以卸载吗)

    adobe creative cloud有什么用(adobe creative cloud可以卸载吗)

  • opporeno2支持多少瓦的快充(opporeno2支持多少w)

    opporeno2支持多少瓦的快充(opporeno2支持多少w)

  • 手机QQ如何退出(手机qq如何退出电脑qq)

    手机QQ如何退出(手机qq如何退出电脑qq)

  • 联想lj2605d硒鼓清零(联想lj2605d硒鼓灯亮黄灯)

    联想lj2605d硒鼓清零(联想lj2605d硒鼓灯亮黄灯)

  • 微信怎么搜50米以内的人(微信可以搜到50米内的人吗)

    微信怎么搜50米以内的人(微信可以搜到50米内的人吗)

  • 淘宝评分4.6严重吗(淘宝评分4.0)

    淘宝评分4.6严重吗(淘宝评分4.0)

  • 华为potal10的型号是(华为ptatl10)

    华为potal10的型号是(华为ptatl10)

  • 华为手机一屏两用怎么打开(华为手机一屏两用怎么设置)

    华为手机一屏两用怎么打开(华为手机一屏两用怎么设置)

  • 荣耀手机怎样隐藏桌面上的应用(荣耀手机怎样隐藏桌面图标)

    荣耀手机怎样隐藏桌面上的应用(荣耀手机怎样隐藏桌面图标)

  • 苹果11怎么复制粘贴(苹果11怎么复制门禁卡到手机)

    苹果11怎么复制粘贴(苹果11怎么复制门禁卡到手机)

  • 为什么苹果订阅打开是空白(为什么苹果订阅显示无法连接)

    为什么苹果订阅打开是空白(为什么苹果订阅显示无法连接)

  • 华为手机下滑栏拉不下来了(华为手机下滑栏不见了怎么设置)

    华为手机下滑栏拉不下来了(华为手机下滑栏不见了怎么设置)

  • 讯飞语记需要付费吗(讯飞语记付费版破解VIP)

    讯飞语记需要付费吗(讯飞语记付费版破解VIP)

  • 手机淘宝会员名可以改吗(手机淘宝会员名在哪里可以看到)

    手机淘宝会员名可以改吗(手机淘宝会员名在哪里可以看到)

  • ipad开不了机是为什么(ipad开不了机为什么)

    ipad开不了机是为什么(ipad开不了机为什么)

  • qq黄钻官方怎么屏蔽(qq黄钻专区在哪里)

    qq黄钻官方怎么屏蔽(qq黄钻专区在哪里)

  • 物联网体系特点(物联网体系特点有哪些)

    物联网体系特点(物联网体系特点有哪些)

  • 在计算机网络中lan指的是(在计算机网络中通常把提供并管理共享资源的计算机称为)

    在计算机网络中lan指的是(在计算机网络中通常把提供并管理共享资源的计算机称为)

  • 苹果x突然没声音怎么回事(苹果x突然没声音了怎么回事)

    苹果x突然没声音怎么回事(苹果x突然没声音了怎么回事)

  • 天猫丢件了怎么赔偿(天猫买东西丢件)

    天猫丢件了怎么赔偿(天猫买东西丢件)

  • 快手直播伴侣看不到字幕(快手直播伴侣看不到互动消息)

    快手直播伴侣看不到字幕(快手直播伴侣看不到互动消息)

  • 两个ppt模板怎么互换(两个ppt模板怎么合并成一个风格的)

    两个ppt模板怎么互换(两个ppt模板怎么合并成一个风格的)

  • airpods第一次要充多久(airpods第一次需要充电吗)

    airpods第一次要充多久(airpods第一次需要充电吗)

  • 安卓手机怎么打印照片(安卓手机怎么打开定位)

    安卓手机怎么打印照片(安卓手机怎么打开定位)

  • anealoo是什么手机(anole是什么牌子)

    anealoo是什么手机(anole是什么牌子)

  • 加密excel文件(excel2019文件加密)

    加密excel文件(excel2019文件加密)

  • 增值税发票开票软件金税盘
  • 向个人提供居住证明
  • 个人出租非住房房产税怎么计算
  • 纳税人识别号是什么哪里可以查到
  • 免征增值税和增值税区别
  • 企业所得税不含税价格怎么算
  • 合同每三个月付一次款
  • 小规模纳税人超过500万可以不转一般纳税人吗
  • 未开票收入下月开票怎么做分录
  • 如何区分总额法和净额法
  • 高新技术企业认证都有哪些条件
  • 速动比率和流动比率下降说明什么
  • 销货清单和发票金额不一致
  • 对同一家企业的定义
  • 工程预付款需要监理审批吗
  • 案例分析房租完税证明怎么入账?
  • 岗位津贴一定要发吗
  • 免抵税额和免抵退税额有什么区别
  • 个体户开普票要交企业所得税吗
  • 经营终止前企业资质变更
  • 代缴水电费是什么意思
  • 个体工商户出售住房增值税
  • 帮客户采购会计分录
  • 4s店以车换车怎么算的
  • 玩游戏时切换窗口怎么弄
  • 新手应该怎么样
  • 如何获取文件夹下所有文件
  • mysql-relay-bin
  • 如果退货卖家拒绝会把货退回来么
  • 开增值税专用发票必须走公账吗
  • 企业投资者撤回投资款
  • 盈利结转利润
  • 电脑显示语言栏在哪里
  • 开立异地银行结息通知
  • 库存盘点怎么做账
  • php使用oci8扩展连接oracle
  • 跨区域涉税事项报告表在哪里打印
  • php查询语句怎么写
  • 房地产企业现金流管理问题研究
  • php提交表单数据有哪几种方法
  • 93.transformer、多头注意力以及代码实现
  • thinkphp d方法
  • 房屋出租 交税
  • 积分换购活动
  • 织梦图片集如何调用
  • php如何判断是移动还是pc
  • 一般纳税人之间转让土地使用权交哪些税金
  • 用友要怎么删除凭证
  • mysql连接数据库的基本步骤是什么
  • 小规模增值税纳税人优惠政策
  • 房地产企业所得税预缴毛利率
  • 业务招待费专票可以抵扣吗
  • 小规模纳税人适用什么会计准则
  • 车船税是什么样子的?
  • 进项有效期
  • 低值易耗工具有哪些
  • 租赁房产税计税依据及计算方式是什么
  • 预付款开了发票
  • 增值税负数发票怎么做账
  • 员工自动辞职有工龄工资吗
  • 公司购买的商品质量问题能用12315投诉吗
  • 固定资产明细账怎么填
  • mysql5.7.17安装
  • win8.1 升级
  • 配置windows server essentials出错
  • linux安装有几种方法
  • winxp内存不能为read
  • mm server conection failed
  • Android Broadcast
  • unity如何操作
  • 低端显卡n卡设置
  • ubuntu nodejs
  • linux oracle数据库登录
  • python ints
  • python urljoin
  • Metaio in Unity3d 教学--- 二. 创建自己的Application
  • jquery使用教程
  • 面向对象的基础知识
  • 医院盖章去哪个部门
  • 车辆购置税是国税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设