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

  • 华为nova5手机型号怎么看(华为Nova5手机型号)

    华为nova5手机型号怎么看(华为Nova5手机型号)

  • 苹果手机怎么取消流量下载限制(苹果手机怎么取消震动功能)

    苹果手机怎么取消流量下载限制(苹果手机怎么取消震动功能)

  • 怎样把充值记录删除(怎样把充值记录从银行里删除)

    怎样把充值记录删除(怎样把充值记录从银行里删除)

  • 电脑num键在哪(电脑上的num键有什么作用)

    电脑num键在哪(电脑上的num键有什么作用)

  • cuda10支持的显卡列表(cuda10支持哪些显卡)

    cuda10支持的显卡列表(cuda10支持哪些显卡)

  • 小米一元流量开启不了(小米一元流量开启了却没数据)

    小米一元流量开启不了(小米一元流量开启了却没数据)

  • 三星电脑怎么截屏(三星电脑怎么截图和保存)

    三星电脑怎么截屏(三星电脑怎么截图和保存)

  • 路由器英文简称(fast路由器)

    路由器英文简称(fast路由器)

  • 华为音频文件在哪个文件夹(华为手机音频存储在手机哪个文件夹里)

    华为音频文件在哪个文件夹(华为手机音频存储在手机哪个文件夹里)

  • 苹果11pro max指纹解锁在哪里(苹果11pro max指纹支付)

    苹果11pro max指纹解锁在哪里(苹果11pro max指纹支付)

  • pr如何减掉视频的一小部分(pr如何减掉视频中的音频)

    pr如何减掉视频的一小部分(pr如何减掉视频中的音频)

  • 微信视频过期了怎么恢复(微信视频过期了怎么看)

    微信视频过期了怎么恢复(微信视频过期了怎么看)

  • ps怎么把原来的字换掉(ps怎么把原来的颜色变成另一种)

    ps怎么把原来的字换掉(ps怎么把原来的颜色变成另一种)

  • 安卓微信号怎么修改(安卓微信号怎么申请第二个)

    安卓微信号怎么修改(安卓微信号怎么申请第二个)

  • 手机亮度自动变暗(手机亮度自动变暗怎么回事)

    手机亮度自动变暗(手机亮度自动变暗怎么回事)

  • vivo手机怎么隐藏图标(vivo手机怎么隐藏QQ)

    vivo手机怎么隐藏图标(vivo手机怎么隐藏QQ)

  • 苹果6录像怎么暂停(苹果6录像怎么样)

    苹果6录像怎么暂停(苹果6录像怎么样)

  • 三星s9+防水吗(三星s9+防水吗可以下河游泳吗)

    三星s9+防水吗(三星s9+防水吗可以下河游泳吗)

  • 华为软件一直显示正在安装(华为软件一直显示安装中)

    华为软件一直显示正在安装(华为软件一直显示安装中)

  • 白边液进喇叭怎么处理(白边液不小心弄扬声器)

    白边液进喇叭怎么处理(白边液不小心弄扬声器)

  • 苹果7p和8p的手机壳通用吗(7p和8p手感哪个好)

    苹果7p和8p的手机壳通用吗(7p和8p手感哪个好)

  • vivox9s如何还原出厂(vivo x9还原所有设置)

    vivox9s如何还原出厂(vivo x9还原所有设置)

  • iphonex怎么开浮窗(苹果x怎么开悬浮)

    iphonex怎么开浮窗(苹果x怎么开悬浮)

  • 怎样知道对方是否拉黑自己(怎样知道对方是否喜欢自己)

    怎样知道对方是否拉黑自己(怎样知道对方是否喜欢自己)

  • 将Mac的废纸篓图标改成Mac Pro一个很酷的垃圾筒(mac废纸篓立即删除和清倒)

    将Mac的废纸篓图标改成Mac Pro一个很酷的垃圾筒(mac废纸篓立即删除和清倒)

  • 去年少交增值税的会计处理
  • 增值税不用交还要计提吗
  • 旅游业差额开票怎么做账
  • 利息税减少
  • 递延收益属于利息收入吗
  • 销项税现金流量指定
  • 财务报表中利润率怎么算
  • 亏损 纳税
  • 企业与政府土地合作开发模式
  • 食堂买菜未取得消费凭证
  • 资助的开发经费可税前扣除吗
  • 保险没有合同能退保吗
  • 售后回租有风险吗
  • 工程完工进项税税务局不给退,走那个科目销毁
  • 拆迁安置房建设流程
  • 三八妇女节要求小班幼儿到校怎么分享
  • 教育费附加计算公式
  • 案例分析关于团员青年的思想困惑疏导和成长问题释疑
  • 个人所得税的标准有几档
  • 营改增后如何确认老项目营改增前收入
  • 分期付款购买商品
  • 设备租赁公司成本
  • 初级备考日记
  • 小微企业需要到哪里报税
  • 小规模季报都报哪些税种
  • 会计人员需要承担的责任
  • 公司食堂支出计入什么科目
  • 印花税是按开票金额还是收入
  • 购入的财务软件怎么入账
  • 事业基金的主要账务处理
  • 发出商品借方余额120000元
  • win7为什么现在不能用了
  • 减免税额科目有没有余额
  • 劳务费要申报个税吗怎么申报
  • uniapp intent
  • 购买专利权的会议纪要
  • 其他业务收入属于收入吗
  • php控制器是用来做什么的
  • 事业单位委托业务费的现金流量
  • 小规模0申报要做账吗
  • 帝国cms使用手册
  • phpcms官网打不开
  • cookie 会话
  • sql2017附加数据库
  • 房地产老项目简易计税方法
  • 存货减值税前可抵扣吗
  • 资本公积账务处理办法
  • 独立法人企业关系怎么写
  • 为什么小规模不可以收专票
  • 合同约定合同期限自动顺延
  • 计提个人所得税会计分录怎么做账
  • 进项税额属于什么会计科目
  • 从个人处借款的会计分录
  • 应付职工社会保险费计入什么科目
  • 运输费增值税专用发票
  • Windows10下MySQL5.7.19安装教程 MySQL忘记root密码修改方法
  • win10禁用所有启动项
  • windows10预装
  • windrv.exe
  • win10打开或关闭
  • ubuntu20.04怎么用
  • linux系统中用户可以分为三种
  • 电脑任务栏中没有网络图标
  • xp系统的设置在哪里
  • win8系统怎么设置密码
  • 微软输入法拼音
  • 用360可以装win7系统吗
  • win10累积更新卡在正在下载
  • forfiles命令详解
  • jquery 伪元素
  • css布局多行多列
  • shell编程总结
  • jQuery同步提交示例代码
  • chrome excel
  • python如何处理文本
  • python中的open
  • javascript设置字体
  • 未开票收入如何申报增值税
  • 重庆网上申报税务操作流程
  • 新疆税务总局网站官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设