位置: 编程技术 - 正文

如何在Python中编写并发程序(python编写代码的步骤)

编辑:rootadmin

推荐整理分享如何在Python中编写并发程序(python编写代码的步骤),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python怎么编,如何在Python中编写斐波那契函数,python怎么编,如何在Python中编写斐波那契函数,如何在python中编写就餐人数,如何在Python中编写一个能对凯撒密码执行解密的小程序,如何在python中编辑图案,如何在Python中编写一个能对凯撒密码执行解密的小程序,内容如对您有帮助,希望把文章链接给更多的朋友!

GIL

在Python中,由于历史原因(GIL),使得Python中多线程的效果非常不理想.GIL使得任何时刻Python只能利用一个CPU核,并且它的调度算法简单粗暴:多线程中,让每个线程运行一段时间t,然后强行挂起该线程,继而去运行其他线程,如此周而复始,直到所有线程结束.

这使得无法有效利用计算机系统中的"局部性",频繁的线程切换也对缓存不是很友好,造成资源的浪费.

据说Python官方曾经实现了一个去除GIL的Python解释器,但是其效果还不如有GIL的解释器,遂放弃.后来Python官方推出了"利用多进程替代多线程"的方案,在Python3中也有concurrent.futures这样的包,让我们的程序编写可以做到"简单和性能兼得".

多进程/多线程+Queue

一般来说,在Python中编写并发程序的经验是:计算密集型任务使用多进程,IO密集型任务使用多进程或者多线程.另外,因为涉及到资源共享,所以需要同步锁等一系列麻烦的步骤,代码编写不直观.另外一种好的思路是利用多进程/多线程+Queue的方法,可以避免加锁这样麻烦低效的方式.

如何在Python中编写并发程序(python编写代码的步骤)

现在在Python2中利用Queue+多进程的方法来处理一个IO密集型任务.

假设现在需要下载多个网页内容并进行解析,单进程的方式效率很低,所以使用多进程/多线程势在必行.我们可以先初始化一个tasks队列,里面将要存储的是一系列dest_url,同时开启4个进程向tasks中取任务然后执行,处理结果存储在一个results队列中,最后对results中的结果进行解析.最后关闭两个队列.

下面是一些主要的逻辑代码.

利用Python3中的concurrent.futures包

在Python3中可以利用concurrent.futures包,编写更加简单易用的多线程/多进程代码.其使用感觉和Java的concurrent框架很相似(借鉴&#;)比如下面的简单代码示例

总结

要是一些大型Python项目也这般编写,那么效率也太低了.在Python中有许多已有的框架使用,使用它们起来更加高效.但是自己的一些"小打小闹"的程序这样来编写还是不错的.:)

Python实现简单多线程任务队列 最近我在用梯度下降算法绘制神经网络的数据时,遇到了一些算法性能的问题。梯度下降算法的代码如下(伪代码):defgradient_descent():#thegradientdescentcod

python的else子句使用指南 在日常coding中,分支语句的使用非常普遍,经常会根据是否满足一定的条件对代码执行的逻辑进行一些控制,所以大家对if[elif[else]]一定不会陌生。分支

python结合shell查询google关键词排名的实现代码 最近老婆大人的公司给老婆大人安排了一个根据关键词查询google网站排名的差事。老婆大人的公司是做seo的,查询的关键词及网站特别的多,看着老婆

标签: python编写代码的步骤

本文链接地址:https://www.jiuchutong.com/biancheng/383335.html 转载请保留说明!

上一篇:Python 多线程抓取图片效率对比(python多线程操作)

下一篇:Python实现简单多线程任务队列(python简单gui)

  • 刚打完发票可以注销税控盘吗
  • 实物折扣的增值税
  • 股权转让如何交税
  • 个人劳务票必须本人开吗
  • 税金计提多了,交少了怎么处理
  • 个体户一定要自己经营吗
  • 融资租赁和经营租赁的特点
  • 免税收入要计入应纳税所得额吗
  • 融资租赁和经营性租赁区别
  • 上一年的收入少做账了该怎么调
  • 已申报未导入是申报成功了吗
  • 如何进行无形资产核算
  • 试驾车抵税
  • 其他应付款重分类到哪个科目
  • 公司法人信息变更是先去税务局还是先去银行
  • 申报退税金额是0是怎么回事
  • 2018年房地产行业分析
  • 员工报销医药费计入什么费用
  • 资产损失申报方式
  • 案例讨论如何进行
  • 转让地下建筑物交土地增值税吗
  • 增值税申报交税后怎样补录未抵扣进项税
  • mac怎么打开hosts文件
  • 现金付款没收据怎么入账
  • 如何养成良好的安全行为
  • 进口小汽车消费税率
  • 社保退休金计算方法
  • 如何预防电脑系统崩溃
  • 应付账款会计分离
  • 业务招待费有
  • 无形资产摊销的会计及账务处理
  • 矿产资源补偿费征收管理规定
  • php常用设计模式(大总结)
  • php实现文件的下载
  • 购买原材料月末需要结转吗
  • php判断文件后缀
  • 车辆处置收入入什么科目
  • 建筑工程企业所得税预缴
  • 企业的所有分类
  • 个人独资公司和合伙公司有什么区别
  • phpcms作者名不显示怎么解决
  • 二季度盈利三季度亏损
  • sql server怎么恢复
  • 个体工商户免费开票额度
  • 不含税单价和不含税合价的区别
  • mongodb修改数据库名称
  • 房屋消防工程
  • 股东以固定资产入股会计处理
  • 结转生产成本的数据从哪来的
  • 职工薪酬包括哪些应如何计算
  • 多计提的工资怎么冲销
  • 超过社保基数的工资怎么发放
  • 对公付货款没有收到发票如何处理
  • 香港发票在内地认可吗
  • 发票缴销了还能恢复吗
  • 管理费用科目余额表有余额怎么办
  • 事业单位职工福利费支出范围
  • 对公账户 发票
  • mysql在数据分析中的作用
  • CentOS(x86_64)下PHP安装memcache扩展问题解决方法分享
  • 64位下无法运行32位程序的解决方法 提示未指定提供程序,也没有指派的默认提供程序
  • linux查看端口数据
  • cocos2d原理
  • [置顶] 《翻身称霸》
  • java iterate()用法
  • easyui折叠面板默认折叠
  • node.js写爬虫
  • android学习路线
  • python爬虫正则
  • unity如何导入资源文件
  • unity3D利用W,A,S,D让物体移动
  • 猫的合集
  • json与对象的区别
  • 新浪微博模仿推特
  • js类的实现
  • 天然气入户安装收费标准2023
  • 2021年江苏省考常州职位表
  • 建筑业统一发票税率
  • 郑州广电地址
  • 开原航天医院官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设