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

  • 加工企业税收优惠政策
  • 劳务公司拿什么来做成本
  • 测绘费发票需要备注么
  • 火车票进项抵扣怎么勾选
  • 小规模纳税人涉税风险
  • 土地增值税清算规程实施细则
  • 现金支票怎么支付的
  • 冲销已结转的成本
  • 免抵税额是否能抵销项税额呢?
  • 工程完工进项税税务局不给退,走那个科目销毁
  • 酒店住宿费一般多少钱一晚
  • 年底结转损益是什么意思
  • 出口退税收汇凭证号
  • 收入准则建造合同预付款
  • 补发住房补贴征求意见
  • 土地收储的含义
  • 买卖房子归谁管
  • 支票作废了需要什么材料
  • 职工购房补贴面积标准
  • 企业应纳税所得额计算公式
  • svchost进程很多怎么办
  • php数组函数,选班长
  • 已抵扣的进项税额红冲的账怎么做
  • 冲往年管理费用的账务处理是否涉及所得税
  • 存放中央银行款项科目按其资金性质
  • 阿里云 ide
  • 拉马克是哪国人
  • 存货非正常损失进项税额转出
  • 劳务公司给包工头打款备注写什么
  • html 提交表单
  • 开源代码网站github
  • php解释器工作流程
  • 命令启动服务管理
  • XF86Setup命令 设置XFee86
  • 购进原材料款项未付应编制什么凭证
  • 不接受商业承兑会怎么样
  • 工程施工资产负债表存货计算公式
  • 所有者权益合计等于什么
  • 公司租用员工的车辆交什么税
  • 工程发票可以开清单吗?
  • centos7自带yum吗
  • rbac权限管理设计
  • 现金流量表上期金额
  • 投资公司和控股公司关系
  • 办公用品普通发票税点多少
  • 合同权益如何进行转让
  • sqlserver2008新建实例
  • mysql开启远程访问权限
  • 同控和非同控的企业合并的分录
  • 买一赠一怎么做账
  • 冲估价入库怎么冲成本
  • 财务费用为什么是向债权人支付的现金流量
  • 房屋建筑物固定资产标牌图片
  • 增值税免抵退税和免退税的区别有什么?
  • 固定资产应计入什么账户
  • 买货品的咨询服务有哪些
  • 个人社保缴纳会不会自动扣款
  • 农产品加计扣除10%进项税账务处理
  • 土地增值税计算题
  • 如何设置sql server
  • mysql5.7.19下载
  • 通过修改注册表激活win7
  • 内存不够用如何升级系统
  • mac安装dw
  • WIN7系统怎么安装 注音输入法
  • 如何调整输入法框的大小
  • perl处理特殊符号
  • cocos2dx-js
  • shtml精简教程让你知道什么是shtml
  • jquery layer
  • 网页中英文切换
  • python随机数代码
  • python内置数据结构有几种
  • python怎样升级
  • TFC360冯燃:手游市场细分领域新秀崛起
  • Linux开发基于Qt的Android应用指定调试设备
  • 安卓 存储权限 访问的地方是哪里
  • python网络编程从入门到精通
  • 单位税额怎么算出来的
  • 购旧设备增值税能不能抵扣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设