位置: 编程技术 - 正文

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

  • 增值税的免税项目有哪些
  • 用友t3核算管理模块怎么结账
  • 白酒消费税纳税人
  • 一般纳税人要做价税分离吗
  • 未入账凭证
  • 免税的开成有税率的怎么办
  • 结存材料物资会计分录怎么做?
  • 农产品加工增值率怎么算
  • 现金折扣不考虑增值税什么意思
  • 多计提以前年度损益调整账务处理怎么做
  • 劳务外包要通过应付职工薪酬吗
  • 一个工程项目多次收款怎样预交增值税
  • 工会费入账科目
  • 增值税申报金额含税吗
  • 技术转让所得减去成本吗
  • 怎么在电子税务局变更财务负责人
  • 分公司分税
  • 销售不动产税务处理
  • 凭证类别不合法怎么处理
  • 金融企业贷款损失准备金
  • 国有资产拍买网
  • 增长率应该要如何计算呢?
  • 支付工资资产减少了吗
  • 增值税小规模纳税人减免增值税
  • 税票认证节假日可以顺延吗?
  • 科研费用拨款如何记账?
  • 企业其他应付款增加说明什么
  • 调增应纳税所得额季度申报表怎么填
  • 以公允价值计量的投资性房地产
  • 印花税是怎么计算
  • centos7安装php7.3
  • cpu的保养有哪些
  • 公司股东变更要交税吗可以将股东变更吗
  • 异地成立分公司的流程和要求
  • cuda运行环境
  • 跨年庆典中燃放的歌曲
  • 债权转让抵押权一并转让,需要办理抵押变更手续
  • get请求与post
  • 建筑保温材料施工规范
  • 季度销售额未超过30万元 季度中间
  • php call方法
  • 织梦自定义表单diy.php更改名字
  • 失控票要在抵扣当月转出吗
  • 公司股东和自然人的关系
  • sql server 内存管理
  • 库存商品入库的会计分录怎么写
  • 收到的技术服务费计入什么科目
  • 季度报表利润表本期金额怎么填
  • 用留存收益筹资为什么没有占用费
  • 应交税费会计核算
  • 上个月的发票未开具
  • 清算期间档案转移
  • 财产租赁合同印花税率多少
  • 利息收入怎么做红字
  • 往来核算是指会计核算中的资金往来业务
  • 企业安装电子监控收费吗
  • 加计抵减四项服务是什么?
  • 账务核对包括账表核对吗
  • 公司购买垃圾袋可以抵扣吗
  • 总分类账户与明细分类账户的关系
  • docker部署zookeeper集群
  • win7显卡属性在哪
  • win7系统出现问题怎么修复
  • win7系统连不了网络
  • unity 加载文件 卡顿
  • unity3ds
  • linux shell脚本命令
  • perl处理特殊符号
  • python中生成随机小数的函数
  • unity3d ugui优化
  • 利用forever和pm2部署node.js项目过程
  • javascript取随机数
  • javascript中变量的命名规则有哪些?
  • 金融知识宣传的建议
  • 我们如何理解税收意义
  • 税务异常处理
  • 我国土地资源总量丰富人均不足
  • 土地增值税分期清算条件?
  • 四川企业退休人员80岁高龄补贴
  • 年终奖怎么报个税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设