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

  • 幼儿园会计需要做什么工作
  • 未交增值税借方表示什么意思
  • 外地预缴税金
  • 小微企业税收优惠政策2023年
  • 增值税专用发票抵扣期限
  • 取得住宿发票的专用发票可以抵扣吗
  • 房产公司售楼部装修费入什么会计科目
  • 季度预交所得税可以弥补上年度亏损吗
  • 小规模纳税人教育费附加和地方教育费附加减免
  • 小规模纳税申报时间
  • 本月无凭证需要结转吗
  • 开出银行汇票支付手续费
  • 向一般纳税人销售劳保专用物品
  • 企业受托研发产品有哪些
  • 印花税计算公式例子
  • 增值税专票5%税率
  • 个人独资企业是法人吗
  • 企业注销后资产如何处置
  • 污水处理厂税收风险
  • 利润表里的营业税金及附加如何计算
  • 货物和劳务
  • 固定资产发生非正常损失相关题目
  • 未摊销金额怎么算
  • 这个月只有销项没有进项怎么申报
  • 资产减值损失怎么处理
  • win11虚拟键盘怎么调出来
  • 软件开发过程rup
  • 租金收入缴纳个税
  • 专有技术应当得到
  • 增值税一般纳税人和小规模纳税人的区别
  • 分包方可以简易计税吗
  • 应收账款收回怎么处理
  • html怎么嵌入js
  • 奥克拉库克湾
  • 社保调整基数后 两个月没变化
  • 浏览器windows下载
  • 建造师与建筑师的区别详解
  • uni-swiper-dot
  • PHP面向对象程序设计
  • 员工持股平台合伙企业
  • load命令怎么用
  • python自学资料
  • python 函数的返回值
  • 人力资源公司开票税目
  • python输出inf
  • 房产原值是含税还是不含税
  • 外贸客户付款方式
  • 关于SQL Server 2019文件组的叙述正确的是
  • mysql获取字段值的长度
  • 稳岗补贴支付范围
  • 分包工程 税务 账务处理
  • 企业薪资制度
  • 为什么要缴纳残保金
  • 存出投资款会计处理
  • 增值税税控系统专用设备费及技术维护费抵扣
  • mysql 5.6 5.7
  • mysql数据库子查询
  • Mysql使用or如何优化
  • windows vista界面
  • Windows Server 2008下 驾驭拨号上网
  • 怎么设置pe系统
  • ubuntu安装教程14.04
  • javascript语言入门教程
  • config_system_switchs
  • python到底怎么学
  • Android: netd中DnsProxyListener的简单介绍
  • Unity的WWW类的用法整理
  • javascript学习指南
  • python str()怎么用
  • jQuery soColorPacker 网页拾色器
  • python中元祖的用法
  • Android alertDialog 动态添加edittext无法弹出键盘解决方案
  • 电子签章在电脑上怎样加印章
  • 北京朝阳区国家税务局
  • 航天金税开票软件客服电话
  • uk在哪里看开票截止日期
  • 沈阳市地方税务局
  • 个人的社会信用代码怎么查
  • 税务局 环保税
  • 资源税什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设