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

  • 微信好友怎么恢复(微信好友怎么恢复不显示该聊天)

    微信好友怎么恢复(微信好友怎么恢复不显示该聊天)

  • 微信朋友圈多少字不会被折叠(微信朋友圈多少行会被折叠)

    微信朋友圈多少字不会被折叠(微信朋友圈多少行会被折叠)

  • 电脑微信截屏退不出去(电脑微信截屏时退出聊天记录)

    电脑微信截屏退不出去(电脑微信截屏时退出聊天记录)

  • 小米ai虚拟助手有什么用(小米ai虚拟助手怎么用)

    小米ai虚拟助手有什么用(小米ai虚拟助手怎么用)

  • 微信怎么查看信息别人是否阅读(微信怎么查看信用卡消费记录)

    微信怎么查看信息别人是否阅读(微信怎么查看信用卡消费记录)

  • iPhone11和XS谁好(iphone11和xs到底买哪个)

    iPhone11和XS谁好(iphone11和xs到底买哪个)

  • 手机有信号但是别人打不进来什么原因(手机有信号但是别人打提示已关机)

    手机有信号但是别人打不进来什么原因(手机有信号但是别人打提示已关机)

  • 快手我的钱包怎么没有了(快手我的钱包怎么没有支付设置)

    快手我的钱包怎么没有了(快手我的钱包怎么没有支付设置)

  • xp系统开机无桌面图标

    xp系统开机无桌面图标

  • iphone11pro是6g运存吗(iphone11pro到底是4g还是6g)

    iphone11pro是6g运存吗(iphone11pro到底是4g还是6g)

  • 电脑需要安装杀毒软件吗(电脑有必要安装杀毒软件)

    电脑需要安装杀毒软件吗(电脑有必要安装杀毒软件)

  • windows没有激活什么意思(windows没有激活可以调节亮度吗)

    windows没有激活什么意思(windows没有激活可以调节亮度吗)

  • 苹果11怎么添加手写键盘(苹果11怎么添加门禁卡)

    苹果11怎么添加手写键盘(苹果11怎么添加门禁卡)

  • 华为gt2与荣耀magic2区别(华为gt2与荣耀watch2)

    华为gt2与荣耀magic2区别(华为gt2与荣耀watch2)

  • 抖音如何解除频繁登录(抖音短视频如何取消时间限制)

    抖音如何解除频繁登录(抖音短视频如何取消时间限制)

  • 蜂助手是干什么用的(蜂助手工作怎么样)

    蜂助手是干什么用的(蜂助手工作怎么样)

  • 闲聊人脸验证在哪里设置(闲鱼人脸验证失败)

    闲聊人脸验证在哪里设置(闲鱼人脸验证失败)

  • 魅族s6如何退出极限省电(魅族s6如何退出安全模式)

    魅族s6如何退出极限省电(魅族s6如何退出安全模式)

  • 戴尔的无线开关在哪(戴尔无线开关驱动程序)

    戴尔的无线开关在哪(戴尔无线开关驱动程序)

  • 加密狗驱动怎么安装(加密狗驱动程序下载)

    加密狗驱动怎么安装(加密狗驱动程序下载)

  • 新苹果平板怎么激活(新苹果平板怎么用)

    新苹果平板怎么激活(新苹果平板怎么用)

  • hdmi1.4和2.0的区别(hdmi1.4和2.0的区别 电视机)

    hdmi1.4和2.0的区别(hdmi1.4和2.0的区别 电视机)

  • 拼多多如何关闭消息提醒(拼多多如何关闭隐私号码保护)

    拼多多如何关闭消息提醒(拼多多如何关闭隐私号码保护)

  • hdr怎么开(哔哩哔哩hdr怎么开)

    hdr怎么开(哔哩哔哩hdr怎么开)

  • 微博怎么屏蔽一个人不给他看(微博怎么屏蔽一个人不让他看到我发的东西)

    微博怎么屏蔽一个人不给他看(微博怎么屏蔽一个人不让他看到我发的东西)

  • 键盘插在主机哪里(键盘插在主机哪个接口比较好)

    键盘插在主机哪里(键盘插在主机哪个接口比较好)

  • mac怎么设置禁止自动连接免费WiFi?(mac怎么禁止开机启动)

    mac怎么设置禁止自动连接免费WiFi?(mac怎么禁止开机启动)

  • 帝国cms系统如何更换模板(帝国cms如何使用)

    帝国cms系统如何更换模板(帝国cms如何使用)

  • phpcms怎么看代码(php源码查看)

    phpcms怎么看代码(php源码查看)

  • 职工薪酬支出及纳税调整
  • 企业借款给个人利息如何处理
  • 车船使用税怎么网上缴费
  • 查询一般纳税人资格证明
  • 金蝶kis专业版的优缺点
  • 资产减值损失借方表示
  • 公司购个人的二手车流程
  • 房地产开发公司排名
  • 股东出让个人股权流程
  • 外购货物用于集体福利属于什么
  • 以前年度损益调整结转到哪里
  • 其他流动资产的构成
  • 自查补交以前年度增值税怎么做账
  • 房地产企业所得税预缴
  • 投资性房地产的定义
  • 停车场吗
  • 外贸企业运输费用占总成本比例
  • 行政单位缴纳罚款如何记账
  • 证券公司手续费怎么收
  • 办理环评费用
  • 利息支出的会计科目
  • 上月没交社保本人能交吗
  • 发生坏账损失账务处理
  • 发票货物或应税劳务名称怎么修改
  • win10无internet怎么解决
  • 电脑连接网线但没有网络
  • 收到厂家返利怎么做分录
  • 可以用鸿蒙系统的手机
  • Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装)
  • php递归函数遍历数组
  • win7网络适配器不见了怎么恢复
  • php readdir函数
  • 公司未经营需要做所得税年度清缴吗
  • 恶搞代码vbs教程
  • 商品流通企业会计科目表
  • 弥补以前年度亏损最多几年
  • 公允价值变动损益和投资收益区别
  • yolov5配置
  • 异步函数执行顺序
  • 未分配利润为负的原因
  • 固定资产清理的借贷方向表示什么
  • 应交增值税为负数怎么处理
  • 社保缴费基数3400
  • 单位之间的争议由谁处理
  • 工程发票需要备注吗
  • 事件委托js例子
  • python初探
  • 自然人独资和个人独资是一样的吗
  • 出口销售收入计算公式
  • 盈余公积转增实收资本会计科目
  • 公转私户违法吗
  • 机票报销属于什么科目
  • 电梯安装费如何分摊
  • 外币收款怎么做账
  • 医院外聘专家费用报销流程
  • 公司注销应收账款如何转让给第三方
  • 营改增对财务人员的影响
  • 收到客户回款 应收账款减少还是增多
  • 混合销售行为的概念
  • 年终奖和工资一起发吗
  • 私对公可以转账怎么转
  • win7系统怎么运行xp系统的软件
  • 本地硬盘满了怎么办
  • GrooveMonitor.exe是什么进程?GrooveMonitor.exe可以禁用卸载吗?
  • xp系统如何禁止各种窗口弹出
  • windows运行不了怎么办
  • win7桌面图标无法拖到任务栏
  • window八
  • win8切换输入法无效
  • cocos2dx schedule
  • Error: String types not allowed (at 'layout_gravity' with value 'bottom/center_horizontal').
  • fortune命令
  • 简述matlab中控制系统的数学描述类型
  • 关于jQuery中的DOM操作,下列哪种方法用来复制元素?
  • nodejs作为后端
  • js原生dialog
  • js清除文本框内的文字
  • 广东省国家税务总局班子成员
  • 航天金税开票软件服务费可以抵扣税款吗
  • 增值税可以抵扣多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设