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

  • 抖音怎么设置自己想看的类型(抖音怎么设置自动关闭屏幕)

    抖音怎么设置自己想看的类型(抖音怎么设置自动关闭屏幕)

  • 浏览器无痕模式在哪里(浏览器无痕模式有什么用)

    浏览器无痕模式在哪里(浏览器无痕模式有什么用)

  • 复制图片到word显示一半(电脑上怎么复制图片到word)

    复制图片到word显示一半(电脑上怎么复制图片到word)

  • word文字上下间距(word文字上下居中怎么弄)

    word文字上下间距(word文字上下居中怎么弄)

  • qq消息推送在哪里设置(qq消息推送在哪里打开)

    qq消息推送在哪里设置(qq消息推送在哪里打开)

  • 抖音灯牌是什么(抖音灯牌是什么颜色)

    抖音灯牌是什么(抖音灯牌是什么颜色)

  • 华为繁体字怎么改为简体(华为繁体字怎么调)

    华为繁体字怎么改为简体(华为繁体字怎么调)

  • amd3800x配什么显卡(amd3800x带核显吗)

    amd3800x配什么显卡(amd3800x带核显吗)

  • ipad pro 2020怎么关机(ipadpro2020怎么强制关机)

    ipad pro 2020怎么关机(ipadpro2020怎么强制关机)

  • 华为nova6 5g的SA和NSA是什么模式(华为nova6 5g的屏幕尺寸)

    华为nova6 5g的SA和NSA是什么模式(华为nova6 5g的屏幕尺寸)

  • 华为mate305g手机什么时候上市(华为mate305g手机重量)

    华为mate305g手机什么时候上市(华为mate305g手机重量)

  • 光纤亮红灯是什么情况(光纤亮红灯咋办)

    光纤亮红灯是什么情况(光纤亮红灯咋办)

  • 网易云音乐怎么看访客(网易云音乐怎么变成mp3格式)

    网易云音乐怎么看访客(网易云音乐怎么变成mp3格式)

  • soul收藏的瞬间在哪(soul收藏的瞬间怎么找)

    soul收藏的瞬间在哪(soul收藏的瞬间怎么找)

  • iphone8p有哪几种颜色(苹果8p产品介绍)

    iphone8p有哪几种颜色(苹果8p产品介绍)

  • 手机红外遥控功能,重要吗(手机红外遥控功能是什么意思)

    手机红外遥控功能,重要吗(手机红外遥控功能是什么意思)

  • lr谁左谁右(左右哪个是左哪个是右)

    lr谁左谁右(左右哪个是左哪个是右)

  • 表格怎么显示全部数字(表格怎么显示全部身份证号)

    表格怎么显示全部数字(表格怎么显示全部身份证号)

  • 手机cpu性能排行榜天梯图最新2022年6月(手机cpu性能排行榜2023最新天梯图)

    手机cpu性能排行榜天梯图最新2022年6月(手机cpu性能排行榜2023最新天梯图)

  • 三星电脑安装win10win8双系统使用方法(三星电脑安装系统按哪个键)

    三星电脑安装win10win8双系统使用方法(三星电脑安装系统按哪个键)

  • 如何恢复撤回的微信聊天记录(如何恢复撤回的信息微信)

    如何恢复撤回的微信聊天记录(如何恢复撤回的信息微信)

  • vite 运行项目报错 ‘axios/index.js‘ does not provide anexport named ‘default‘(vi应用项目)

    vite 运行项目报错 ‘axios/index.js‘ does not provide anexport named ‘default‘(vi应用项目)

  • Vue 之 vue3 与 TS 的配合使用整理(vue3和ts)

    Vue 之 vue3 与 TS 的配合使用整理(vue3和ts)

  • 若依:如何去掉首页,设置登录后跳转到第一个路由菜单(怎么样去掉)

    若依:如何去掉首页,设置登录后跳转到第一个路由菜单(怎么样去掉)

  • 某煤矿将自采原煤用于投资的业务应缴纳资源税
  • 280元抵减税控设备
  • 个人所得税是什么
  • 营销策划代理合同
  • 未达起征点销售额和小微企业免税销售额
  • 金税盘备份文件名
  • 怎么理解捐赠支出税前扣除标准计算口径
  • 预售款计入收入吗
  • 补记上年度计提所得税费用的会计分录
  • 记账凭证广告费
  • 股权转让的溢价要交什么税
  • 融资租赁资产如何入账
  • 月底结转应交税费怎么弄
  • 公司房产税如何计算器
  • 资产处置税务风险有哪些
  • 金融资产包括哪三大类及会计科目
  • 未分配利润怎么填
  • 民办非企业缴纳失业保险吗
  • 利润分成的会计分录
  • 企业所得税的工资薪金包括社保
  • 应付职工薪酬年底怎么结转
  • 印花税未交罚款会怎么样
  • 当月的费用次月入账可以么
  • 成本核算怎么做账
  • PHP:xml_set_start_namespace_decl_handler()的用法_XML解析器函数
  • linux文件管理与常用命令实验报告
  • mac如何恢复到出厂系统版本
  • 偷渡者视频
  • 2022年苹果iphone14视频配音乐
  • 销售使用过的汽车会计分录
  • PHP生成静态页面
  • idea怎么运行前端vue项目
  • php匿名函数为何不匿名
  • php制作留言板包含登录和功能实现
  • java中ne
  • 附加税多交了怎么办理退税
  • windowsserver2008r2密码重置
  • 网上蛋糕商城jsp页面
  • 自动驾驶决策规划技术理论与实践电子版
  • node使用axios
  • React Hook - useState函数的详细解析
  • nvm 安装node
  • php注释有几种?如何表示?
  • upf命令
  • inotify_event
  • 个体工商户注册资本是多少
  • 旅行社代订的机票可以退吗
  • phpcms模板制作教程
  • vue this.$el
  • 软件开发公司如何保护源码
  • 科目余额表怎么填
  • 利息补缴税款加收利息计算
  • 企业回购本公司股票会导致所有者权益增加
  • 固定资产低于净值出售会计处理
  • 企业所得税的计提
  • 公司买车抵税最新政策2022购置税减半享受不?
  • 制造费用的核算内容包括什么
  • 税金及附加和营业税金及附加是一个科目吗
  • 调整以前月份的管理费用怎么做
  • 计提销售费用什么意思
  • 水费能抵扣进项税吗
  • sql合并多条记录某一个字段
  • windows录音机录音文件格式
  • ubuntu20.04怎么用
  • win10无人值守文件使用方法
  • windows10电脑重置电脑
  • mac safari使用技巧
  • centos6.10安装教程详解
  • ati2plab.exe是什么进程 ati2plab进程安全吗
  • centos 操作日志
  • win7共享设置(详细图文步骤)
  • win7旗舰版系统激活密钥
  • python中类怎么用
  • javascript的介绍
  • Node.js中的http请求客户端示例(request client)
  • 怎么检测python
  • javascript的返回值
  • 外购应税消费品用于生产非应税消费品
  • 农机免税范围
  • 办理对外支付税务备案需要多久时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设