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

  • 小规模纳税人要做账吗
  • 金蝶美金账户怎么开
  • 商品进销差价属于流动资产吗
  • 小规模纳税人缴纳增值税怎么做账
  • 入账成本会计分录
  • 企业所得税报税日期
  • 营改增前土地增值税的计算方法
  • 离婚财产分割涉及偷税漏税可以移交税务局调查吗
  • 收到发票付款是抹了零头怎么做账
  • 垫付被骗客服承诺退款
  • 买卖汇票是什么意思
  • 单位购买办公用品可以抵扣吗
  • 计提地税走哪个科目
  • 免抵退税系统操作流程
  • 稿酬所得个人所得税计算方法
  • 中意装饰工程有限公司怎么样
  • 保险公司赔偿计入营业外收入
  • 增值税发票发票号
  • 购货方跨月销项负数发票如何做账?
  • 生物资产全套账务处理
  • 外观专利的价值
  • win7系统我的电脑图标不见了
  • win11打开图片
  • 日历怎么不能添加事件了
  • 劳务外包开什么样的发票
  • PHP:pg_last_notice()的用法_PostgreSQL函数
  • wordpress测试
  • 递归 php
  • 纳税人解除劳动合同证明
  • 印花税跨年度缴纳有滞纳金吗
  • vgreduce --removemissing
  • 企业销售旧车增值税处理
  • 公司当月没有人发工资
  • 网上银行回单可以做账吗
  • 香港公司代收国际汇款税务怎么处理
  • sqlite时间戳转时间语句(时间转时间戳)
  • 金税四期对建筑企业的影响
  • 印花税减半征收优惠政策2021
  • 企业不计提固定资产损失
  • 账面价值与计税基础的区别和联系
  • 积分兑换商品怎么查快递
  • 搬迁补偿款的会计分录
  • 长期应付账款是什么
  • 净资产收益率与什么指标有关
  • 进项税额不得从销项税额中抵扣项目是什么意思
  • 营业成本年末怎么结转
  • 列举2-4种特殊销售方式,其销售额如何确认?
  • 出纳提取现金有金额限制吗
  • 一般性企业
  • 公司进项不够可以退税吗
  • 结转生产成本是负数怎么办
  • 公司章程约定的出资时间
  • 利润表的编制方法和步骤实操
  • SQL Server的通用分页存储过程 未使用游标,速度更快!
  • 用友t6运行特别慢
  • 使用灭火器时要对准火焰的什么部位喷射
  • freebsd重启命令
  • windows xp怎么清理c盘
  • winxp开启远程桌面连接
  • win7升级win8.1失败
  • 修改linux系统用户密码
  • bootstrap导航有哪些
  • bootstrap轮播插件
  • js自动输入
  • unity自带的代码编辑器
  • 学习雷锋好榜样
  • javascript解决了什么问题
  • 使用jquery实现的项目
  • javascript 二维码
  • nodejs的理解
  • 使用jquery实现表单验证
  • The method setClass(Context, Class<?>) in the type Intent is not applicable for the问题
  • javascript 操作css
  • 浏览器环境下的事件循环
  • Python Sql数据库增删改查操作简单封装
  • 如何缴纳地税工伤保险
  • 余额宝出现问题怎么办?
  • 如何查询车辆购买的保险
  • 税收征收管理与税收大数据分析
  • 小规模纳税人在电子税务局怎么报税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设