位置: 编程技术 - 正文

如何在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)

  • 公司有买社保就要交税吗
  • 居民个人的综合所得
  • 销售收入怎么计算销项税额
  • 申报社保不报个人账户
  • 公司法人已变更,前法人被失信
  • 职工薪酬纳税调减的情况
  • 企业股东分红可以不按比例分吗
  • 企业文化事业建设费计算
  • 房地产开发企业资质证书
  • 代开运输发票是否预征企业所得税?
  • 税务记账保存多少年纳税人转小规模
  • 划转税务的非税收入2023
  • 购买资产佣金应该怎么算
  • 出租固定资产取得的租金收入属于什么收入
  • 质量管理体系认证证书在哪里办
  • 货代行业红字冲正发票怎么做凭证
  • 京东电子商务平台业务流程
  • 小规模纳税人装修费用计入什么科目
  • 增值税季度报税
  • 民办学校都没有编制吗
  • 发票开错重开怎么做账?
  • 初级考试备考计划
  • 年平均息税前利润是什么意思
  • 财产保险费计入什么科目
  • 1697508301
  • 跨期间收入如何确定当期收入
  • 单位购买短期保本理财产品如何做账?
  • scanexplicit.exe - scanexplicit是什么进程 作用是什么
  • 交通费用扣除标准
  • php实现保存网站内容
  • php与jquery
  • 异地提供建筑服务预缴增值税
  • 公司招的兼职员工怎么报个税
  • 非限定性净资产年末怎么处理
  • 不动产在建工程领用原材料的分录
  • 出口零退税率商品有哪些
  • 公司员工借款怎么做账
  • 收取增值税一般是多少
  • PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
  • 未按规定采取预防措施,导致发生严重突发事件的
  • php socket_create
  • 浅谈PHP发送HTTP请求的几种方式
  • 零申报怎么做报表
  • pytorch怎么入门
  • ChatGPT强化学习大杀器——近端策略优化(PPO)
  • mvc框架工作流程
  • 固定资产实收资本按照什么入账
  • 长期挂账的其他应付款税务风险
  • 生产车间年终奖计入什么科目
  • 清算存货分配给股东账分录
  • 小规模城建税减半征收2020新政策
  • 应付账款调整科目余额分录
  • 未交增值税账务处理
  • 车船税缴纳后有发票吗
  • 预付账款怎么做坏账
  • 财务费用和应付利息都在借方
  • 记账凭证可以先做贷方吗
  • 应付账款账户怎么结转
  • 废料卖出算哪种收入
  • 生产型企业加计扣除10%
  • 微软宣布今年不会为全职员工加薪j
  • win7提示盗版怎样激活
  • winxp启动
  • wps.exe是什么
  • windows xp怎么清理c盘
  • linux查看硬件信息的命令
  • 怎样设置Win XP下安装打印机驱动程序
  • 如何返回系统
  • js中alert弹不出来
  • linux保存
  • 批处理 输出换行
  • 从零开始学什么技术
  • javascript 作用
  • js实现@功能
  • 说几条javascript的基本规范
  • 纳税申报过了申报期未申报怎么办
  • 经营所得专项扣除养老保险费可以全额扣除吗
  • 购房合同交契税怎么交
  • 青年税务培训内容有哪些
  • 耕地占用税应该什么时候交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设