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

  • 一般纳税人注销公司麻烦吗
  • 济南非税是什么意思
  • 工商年报多久能显示
  • 小型微利企业企业所得税优惠政策2021年
  • 银行回单电子退库是什么意思
  • 房地产企业消防设施计入什么科目
  • 发票验证码和校验码是一样的吗
  • 小规模能开劳务费吗
  • 股权变更怎么收费
  • 营业外收入的核算内容主要有哪些
  • 企业购买商品发生的商业 应该计入财务费用吗
  • 融资租赁开始日最低租赁付款额
  • 增值税进项没收到必须开销项怎么办?
  • 股东债权转资本公积利和弊
  • 企业所得税研发费用100%扣除的有哪些企业
  • 增值税普通发票和普通发票的区别怎么交税
  • 增值税专用发票和普通发票的区别
  • 详细解读财税[2014]75号文件
  • 不征税收入税屋
  • 董事会费汇算清缴计入什么科目
  • 土地所有权和使用权的法律规定
  • 股票现金分红
  • 公司收到个人投资款没有备注
  • 研发费用加计扣除最新政策2023
  • 个体工商户核定征收怎么报税
  • linux CentOS/redhat 6.5 LVM分区使用详解
  • 怎么远程重装win10
  • 企业所得税季度申报表季度平均值
  • spss安装后无法启动,并行配置不正确
  • linux安装常用命令
  • ahqtb.exe是啥进程 ahqtb进程信息查询
  • PHP:pg_lo_truncate()的用法_PostgreSQL函数
  • 存货周转材料报废处理会计分录
  • 进价金额核算法的账务处理特点
  • 提取企业发展基金用到银行存款科目吗
  • 踩坑视频
  • php导出表格
  • 企业办理税务
  • 存货成本在哪个表里
  • php数组求最大值
  • 房产税为什么会退税
  • thinkphp框架介绍
  • 成功解决冲突的能力英语
  • 什么是CHATGPT
  • php判断链表是否有环
  • 企业所得税中哪些属于免税收入
  • 培训机构账务处理
  • vue实现注册
  • okhttp源码
  • asp 数据库
  • 贴现法付息的实际利息
  • 没有购销合同的销售额交印花税吗
  • 有限合伙企业的
  • 收到销货方的返款分录
  • 总公司与分公司的账务处理
  • 运杂费扣除增值税进项税额
  • 工会经费计提的比例是多少
  • 税局代开专用发票时交的钱如何记账?
  • 空调的预计净残值是什么
  • 所得税汇算清缴前取得跨年发票
  • 私营企业固定资产法律制度
  • mysql怎么复制粘贴语句
  • sql server建表时怎样选择数据类型
  • windows7怎么说
  • ubuntu 管理软件
  • 如何使用xp
  • Win10 Mobile RS2预览版WiFi设置页面将和pc页面相同
  • window扫雷游戏在哪里
  • windows操作大全
  • cocos creator特效制作
  • jquery的选择器作用是选中某些元素
  • vue js 页面代码分离
  • 欢欢长大了的童年
  • javascript函数如何定义及其作用
  • 个体税务申报时间怎么填
  • 全电发票
  • 芜湖买房退契税在哪里退
  • 小企业会计准则的印花税计入什么
  • 郑州房子契税退税
  • 屠宰场需要环评吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设