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

  • oppok9s怎么调24小时(oppor9sk怎么调夜间模式)

    oppok9s怎么调24小时(oppor9sk怎么调夜间模式)

  • 快手关闭在线状态对方显示什么(快手关闭在线状态怎么设置)

    快手关闭在线状态对方显示什么(快手关闭在线状态怎么设置)

  • 三星zflip怎么放两张卡(三星zflip如何)

    三星zflip怎么放两张卡(三星zflip如何)

  • 荣耀手机安装未知应用权限在哪(荣耀手机安装未知应用权限怎么解除)

    荣耀手机安装未知应用权限在哪(荣耀手机安装未知应用权限怎么解除)

  • 荣耀20pro屏幕刷新率是多少HZ(荣耀20pro刷emui)

    荣耀20pro屏幕刷新率是多少HZ(荣耀20pro刷emui)

  • 苹果怎么删除日历提醒事项(苹果怎么删除日程)

    苹果怎么删除日历提醒事项(苹果怎么删除日程)

  • 怎么关闭qq顶上的小程序(qq怎么关闭顶部小程序功能)

    怎么关闭qq顶上的小程序(qq怎么关闭顶部小程序功能)

  • 微信健康码怎么解除绑定(微信健康码怎么把非本人改成本人)

    微信健康码怎么解除绑定(微信健康码怎么把非本人改成本人)

  • nova7支持多屏协同吗(nova7多屏在哪里?)

    nova7支持多屏协同吗(nova7多屏在哪里?)

  • 常用的无损检测的方法有(常用的无损检测有哪些)

    常用的无损检测的方法有(常用的无损检测有哪些)

  • 苹果8p建议升级13.4吗(苹果8p建议升级15.7吗)

    苹果8p建议升级13.4吗(苹果8p建议升级15.7吗)

  • 淘宝心级卖家是什么意思(淘宝心级划分)

    淘宝心级卖家是什么意思(淘宝心级划分)

  • 有光驱和无光驱的区别(有光驱和无光驱哪个好)

    有光驱和无光驱的区别(有光驱和无光驱哪个好)

  • qq视频被录屏会有提示吗(qq视频录屏会被对方发现吗)

    qq视频被录屏会有提示吗(qq视频录屏会被对方发现吗)

  • 苹果x快充支持多少w快充(苹果x快充支持多少)

    苹果x快充支持多少w快充(苹果x快充支持多少)

  • 微信消息怎么批量已读(微信消息怎么批量设置已读)

    微信消息怎么批量已读(微信消息怎么批量设置已读)

  • mate30开售时间(mate30刚发售多少钱)

    mate30开售时间(mate30刚发售多少钱)

  • 华为p20pro快充多少w(华为p20pro快充多少)

    华为p20pro快充多少w(华为p20pro快充多少)

  • 4g上面的加号什么意思(4g上面的加号什么意思收费吗咋取消)

    4g上面的加号什么意思(4g上面的加号什么意思收费吗咋取消)

  • vivoy97otg在哪打开(vivoy97手机ot g在哪儿打开)

    vivoy97otg在哪打开(vivoy97手机ot g在哪儿打开)

  • qq怎样关闭精选照片(怎么关闭qq精选推荐)

    qq怎样关闭精选照片(怎么关闭qq精选推荐)

  • 青龙面板拉库命令大全最新【2022-10-13】(青龙面板拉库命令)

    青龙面板拉库命令大全最新【2022-10-13】(青龙面板拉库命令)

  • Yolopose关键点检测:自己标注数据集,制作数据集(一)(关键点检测backbone)

    Yolopose关键点检测:自己标注数据集,制作数据集(一)(关键点检测backbone)

  • 关于CPU和GPU版本共存下的安装Pytorch(跑YOLO模型)(cpu和gpu性能对比)

    关于CPU和GPU版本共存下的安装Pytorch(跑YOLO模型)(cpu和gpu性能对比)

  • 企业所得税年报申报时间
  • 不含税金额计算税额的计算公式
  • 涉及免所得税及减半所得税的业务如何做账
  • 个人报销电话费怎么做分录
  • 季度30万免增值税什么时候结束
  • 增值税科目年末结转可以吗
  • 社保多交退款多久到账
  • 自主研发全流程
  • 税控设备发行是什么行业
  • 固定资产融资租出计入什么科目
  • 预付账款属于什么账户
  • 办公设备维修费会计分录
  • 个人取得的咨询费是什么
  • 货物赔偿款会计分录
  • 不动产增值税怎么算
  • 营业收入不开发票
  • 印花税 企业
  • 本年度应收账款是否应该加起初
  • 进项税是在抵扣吗
  • 企业购进货物被没收 进项税额能否抵扣?
  • 资本公积盈余公积区别
  • 购进要不要交印花税
  • 金银首饰的消费税税务处理
  • 商业土地厂房办公房过户需要交什么税?
  • 文化事业建设费税收优惠政策2023
  • 其他应付款如何做账
  • 个人转让公司限售股纳税地点要求
  • 机动车检测工作
  • 1697509966
  • 财政专项资金不征税收入
  • 苹果电脑安装中国银行控件用不了
  • windows11怎么创建宽带拨号连接图标
  • 公司收到拆迁补偿款要交税吗
  • sharedprem.exe - sharedprem是什么进程 有什么作用
  • 已认证未付款可以退款吗
  • 摊余成本计量的金融资产账面价值
  • msg0.db是什么文件
  • 吃鸡到底用什么显卡性价比最高?
  • 获取vue实例
  • PHP:imagegammacorrect()的用法_GD库图像处理函数
  • 最好的ph计
  • vue created mounted
  • 一般纳税人企业所得税如何计算
  • php运用
  • 深入浅析SQL Server 触发器
  • 二级栏目怎么做
  • 企业收到土地补偿金需要开发票吗
  • 减免税款借贷方表示
  • 一般纳税人企业所得税税率多少
  • 关于成本核算的论文
  • 未抵扣进项税额什么意思
  • 个人社保和公积金
  • 个体户减免税额怎么填
  • 未使用的固定资产计提折旧计入什么科目
  • 国际快递能发吗
  • 工业企业低值易耗品二级科目
  • 自动化收集落料
  • 不同数据库之间的数据一同传递
  • centos6.5设置网络
  • 开源操作系统总结
  • mac如何恢复到出厂系统版本
  • 苹果mac系统如何升级最新版本
  • win8.1语言包下载
  • win7桌面图标自动排列怎么取消
  • xp系统停止服务了还能用吗
  • win7关闭系统更新在哪里
  • win8.2系统
  • gnu grub卸载
  • python音频文件读写
  • jquery 瀑布流
  • node实战
  • 用python循环语句
  • java密码强度检验工具
  • js动态给table添加行
  • 如何控制孩子的手机使用时间
  • 安卓手机如何查
  • 深圳企业所得税税率多少
  • 定额发票是如何开具的
  • 税务注销后发现报表报错的怎么办
  • 1950土地改革后土地所有权
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设