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

  • 财务软件怎么看利润
  • 简易计征怎么开票
  • 新政府会计制度下属于负债类科目的是
  • 转登记为小规模纳税人未抵扣的进项税额
  • 怎样进行房产置换的账务处理
  • 物业公司哪些费用需要公示
  • 存货跌价准备转销会影响当期损益吗
  • 公司向股东借款计入什么科目
  • 租的办公室要交税么
  • 小规模纳税人出售使用过固定资产
  • 行政单位租个人房子能用收据下账吗
  • 汽车配件的税收编码是多少
  • 合伙企业的所得税政策
  • 个体工商户税种认定的税目可以改吗
  • 无形资产和固定资产计提折旧的时间
  • 暂估应付款借方
  • 企业账户利息收入怎么算
  • 行政事业单位的固定资产不计提折旧
  • 如何清理插件残留
  • 个人股权转让要交增值税吗
  • 生产性企业购买粽子可以开专票吗
  • scanexplicit.exe - scanexplicit是什么进程 作用是什么
  • 进口关税增值税计算公式
  • msmpeng.exe是什么进程
  • 企业所得税避税的方法
  • 销售农产品的进项税
  • PHP:Memcached::setOption()的用法_Memcached类
  • hbuilder怎么下载
  • cpu版本的pytorch可以运行LSgan嘛
  • 消费税的会计分录怎么写
  • 解聘员工补偿金能拖欠吗
  • 违反发票管理规定2次公告内容
  • 研发费用加计扣除新税收政策2023
  • 提存计划怎么算
  • electron-vue官网
  • 数据分析课
  • c语言设计酒店管理系统
  • gawk命令 模式扫描与处理语言
  • exfat转换fat32命令
  • 转账支票适用范围
  • 租金计入主营业务成本吗
  • 出售持有股票会计处理
  • 年终奖怎么计算个税
  • 个体户可以开多少免税发票
  • 应交税费明细账登记图
  • 勾选了不抵扣还能抵扣
  • sql server 2008使用说明
  • 关联方交易金额达到多少算转移定价
  • 做模具怎么找客户
  • 汇算清缴是不是一定要做
  • 高速公路车辆通行卡没还怎么办
  • 预付一年房租收到专票账务处理
  • 不是企业职工能否挂靠企业交社保
  • 企业产值什么意思
  • 线上MYSQL同步报错故障处理方法总结(必看篇)
  • 戴尔笔记本电脑开不了机
  • win7误删注册表
  • mac远程桌面mac
  • /etc/rc.d/rc与/etc/rc.d/init.d的关系介绍
  • centos编译环境
  • nerosmartstart.exe - nerosmartstart是什么进程 作用是什么
  • unity中
  • 引用javascript外部脚本的正确写法
  • 搭建nfs
  • linux shell条件判断语句
  • python ssh 远程执行命令
  • 精灵动画片大全90年代
  • 三个文件怎么汇总到一个里
  • unity2d ui
  • python中面向对象的概念
  • python微信公众号开发教程
  • android support包
  • 12366纳税服务热线坐席人员
  • 公务员副处级工资待遇
  • 社保批扣和灵活就业批扣有什么区别
  • 上饶县国税局局长名单
  • 12366人工服务时间节假日上班吗
  • 上海地方税务局发票查询
  • 政务公开事项目录编制
  • 税法难吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设