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

  • 软文推广至关重要的手段?(软文的推广有哪些,各个类别具体内容是什么?)

    软文推广至关重要的手段?(软文的推广有哪些,各个类别具体内容是什么?)

  • 芒果tv会员怎么共享给朋友(芒果tv会员怎么给别人用)

    芒果tv会员怎么共享给朋友(芒果tv会员怎么给别人用)

  • 苹果手机怎么修改手机铃声(苹果手机怎么修改微信步数)

    苹果手机怎么修改手机铃声(苹果手机怎么修改微信步数)

  • 华为nova5i pro什么时候上市(华为nova5ipro什么处理器)

    华为nova5i pro什么时候上市(华为nova5ipro什么处理器)

  • mate30怎么不休眠(mate30 不休眠)

    mate30怎么不休眠(mate30 不休眠)

  • 苹果怎么设置重复拨打电话(苹果怎么设置重复呼叫一个号码)

    苹果怎么设置重复拨打电话(苹果怎么设置重复呼叫一个号码)

  • qq要好友辅助验证怎么办(qq要好友辅助验证吗)

    qq要好友辅助验证怎么办(qq要好友辅助验证吗)

  • 苹果手机蓝牙每天自动开启怎么办(苹果手机蓝牙每天自动打开怎么办)

    苹果手机蓝牙每天自动开启怎么办(苹果手机蓝牙每天自动打开怎么办)

  • 苹果手机抖音怎么看不到好友在线(苹果手机抖音怎么去掉抖音号水印)

    苹果手机抖音怎么看不到好友在线(苹果手机抖音怎么去掉抖音号水印)

  • 探探怎么看直播(探探怎么看直播收益)

    探探怎么看直播(探探怎么看直播收益)

  • out是什么插孔(output插孔)

    out是什么插孔(output插孔)

  • 支付宝好友请求有效期(支付宝好友请求能看到时间吗)

    支付宝好友请求有效期(支付宝好友请求能看到时间吗)

  • m2固态硬盘缓存有什么用(m2固态硬盘缓存512)

    m2固态硬盘缓存有什么用(m2固态硬盘缓存512)

  • 16th是什么手机(手机16+1t)

    16th是什么手机(手机16+1t)

  • qq的等级太阳月亮分别代表多少(qq里的等级 太阳好还是月亮好)

    qq的等级太阳月亮分别代表多少(qq里的等级 太阳好还是月亮好)

  • 苹果怎么取消三指控制(苹果怎么取消三指撤销)

    苹果怎么取消三指控制(苹果怎么取消三指撤销)

  • 笔记本怎么一键还原(笔记本怎么一键多选文件)

    笔记本怎么一键还原(笔记本怎么一键多选文件)

  • 快手极速版属于腾讯吗(快手极速版属于电信定向流量)

    快手极速版属于腾讯吗(快手极速版属于电信定向流量)

  • 抖音怎么视频和图片一起发(抖音怎么视频和图片一块发)

    抖音怎么视频和图片一起发(抖音怎么视频和图片一块发)

  • 淘最热点怎么提现(淘最热点能提现吗)

    淘最热点怎么提现(淘最热点能提现吗)

  • 为什么微信语音通话没有铃声(为什么微信语音声音很小)

    为什么微信语音通话没有铃声(为什么微信语音声音很小)

  • vivox27怎么没快充了(vivox27快捷栏怎么打开)

    vivox27怎么没快充了(vivox27快捷栏怎么打开)

  • iphonex是2k屏幕吗(苹果x是2.5d屏幕吗)

    iphonex是2k屏幕吗(苹果x是2.5d屏幕吗)

  • 小米6如何设置指纹支付(小米6如何设置老人模式)

    小米6如何设置指纹支付(小米6如何设置老人模式)

  • Linux系统下对硬盘分区进行扩容的方法总结(linux对硬件的要求)

    Linux系统下对硬盘分区进行扩容的方法总结(linux对硬件的要求)

  • 六月雪的养殖方法,六月雪盆景怎么养(六月雪的养殖方法和注意事项)

    六月雪的养殖方法,六月雪盆景怎么养(六月雪的养殖方法和注意事项)

  • 电脑卡慢常见原因分析和处理(电脑卡慢咋办)

    电脑卡慢常见原因分析和处理(电脑卡慢咋办)

  • 水利建设专项资金收入优惠政策
  • 税收保全措施适用于
  • 生产成本和营业成本的关系
  • 缴纳城镇土地使用税
  • 纳税表不得抵扣什么意思
  • 管理费用福利费和应付职工薪酬福利费区别
  • 银行开户登记号在哪看
  • 增值税都有哪些科目
  • 买一赠一视同销售征收增值税吗
  • 土地出让交增值税多少
  • 财务报表分析方法有
  • 出口退税的发票怎么做账
  • 发票已缴销什么意思
  • 小规模纳税人提供设计服务税率
  • 可以对开发票吗
  • 经营性租入的固定资产需要计提折旧吗
  • 原材料入账价值合理损耗
  • 工会票据电子化管理系统如何领发票
  • 预提差率费怎么记账
  • 高新技术企业研发费
  • bios中关闭软盘
  • 如何清理插件残留
  • 扣缴义务人申报和综合所得年度自行申报
  • 取得普通发票与专票区别
  • php ffi 教程
  • 房地产企业销售额扣除土地价款
  • 赞助收入税务处理
  • js编写一个标准的单例模式类
  • 秋日里通往卢浮宫的杜乐丽花园,法国巴黎 (© Brian A. Jackson/Getty Images Plus)
  • 利润分配的会计分录怎么写
  • 前端的基本知识
  • swiper.js常用功能
  • 收入支出如何算利润
  • 学生个人网站制作html代码
  • 应付国库集中支付结余在什么时候确认
  • 汇算清缴应补税额为负数
  • 我初次尝试制作的英文怎么写
  • css3栅格布局
  • 公允价值变动损益怎么算出来的
  • 织梦作坊的微博
  • 销售不动产差额征税可以开专票吗
  • 关于帝国战争的游戏
  • 工伤医疗费必须要交吗
  • 进项税认证抵扣流程
  • 什么企业进项多
  • 企业未分配利润长期不分配
  • 原材料暂估入库分录
  • 进项税额与库存的关系
  • 合并财务报表内部交易抵消顺流和逆流
  • 存货周转率多少算合理
  • 母公司溢价收购子公司
  • 学校接受捐赠收入要交企业所得税吗
  • 有支出没有发票应怎么整改
  • 利润所得税费用
  • 预付账款余额在贷方为
  • 本月购进金额怎么算
  • 信用减值损失6702
  • 银行询证函快递费谁负担运费
  • 银行凭证怎么记账
  • 工业企业存货发出计价的方法
  • sql server233错误
  • winxp系统纯净版
  • solaris修改时间
  • Win10系统无法访问局域网共享电脑怎么办
  • xp系统安装版
  • mac屏保怎么换
  • win7系统升级win8
  • win7系统电脑无限重启
  • win8系统文件
  • uploadify文件上传
  • python到底怎么学
  • OSG 砖块 shader 例子 GLSL
  • node.js操作文件
  • js限制输入字符长度
  • javascript教程
  • js图片轮播和点击切换
  • python多线程怎么用
  • 税务局稽查科有什么处理企业的办法
  • 房地产公司可以查到客户购房信息
  • 税务约谈的法律依据
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设