Python网络编程(线程通信、GIL、服务器模型)
进程的概念主要有两点:
- 第一,进程是一个实体。每一个进程都有它自己的地址空间,
- 一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。
- 文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
- 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),
- 它才能成为一个活动的实体,我们称其为进程。
- [3]进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,
- 描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
- 通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,
- 在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,
- 而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,
- 故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。
- 当下推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。
- GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念
- 由于不同的执行环境(解释器)所导致的例如Jpython C#py都没有GIL
- Python的多线程在多核CPU上,只对于IO密集型计算产生正面效果;
- 而当有至少有一个CPU密集型线程存在,那么多线程效率会由于GIL而大幅下降。
- GIL其实是功能和性能之间权衡后的产物,它尤其存在的合理性,也有较难改变的客观因素
- Line cpu: 8.15166711807251 单进程cpu密集操作
- Line IO: 6.841825246810913 单进程IO密集操作
- Thread cpu 8.414522647857666 多线程cpu密集操作
- Thread IO 6.023292541503906 多线程IO密集操作
- Process cpu 4.079084157943726 多进程cpu密集操作
- Process IO 3.2132551670074463 多进程IO密集操作
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【Python】从0开始写爬虫——转身扒豆瓣电影
豆瓣就比较符合这个“明人不说暗话”的原则。所以我们扒豆瓣,不多说,直接上代码 from scrapy import app import re header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36', 'Host': 'movie.douban.com', 'Accept-Language': 'zh-CN,zh;q=0.9' } movie_url = "https://movie.douban.com/subject/26985127/?from=showing" m_id = re.search("[0-9]+", movie_url).group() # 获取soup对象 soup = app.get_soup(url=movie_url, headers=header, charset="utf-8") content = soup.find(id="cont...
- 下一篇
[雪峰磁针石博客]构建工具buildbot教程 持续交付与构建
Buildbot是python实现的开源持续构建和持续交付工具,为Python, Mozilla, Chromium, WebKit等知名项目使用。 与Jenkins相比,Buildbot在大陆使用者较少。原因在于Jenkins的界面相对较美观,更容易上手;Jenkins的中文文档比较丰富。但是Jenkins因为资源消耗庞大、不太方便定制而不受一些有实力的公司欢迎。这些不少把目光聚焦在Buildbot。 究竟Buildbot有哪些优点让这些公司青睐呢?Buildbot基于python网络框架Twisted,分布式做得好。Buildbot可以直接使用python包,轻松拥有上万库,具备强大的扩展能力。如果你觉得Jenkins已经轻松地满足你的需求,你不需要Buildbot。如果你在Jenkins时觉得效率低下、扩展困难、一些用python等脚本可以实现的动作在Jenkins困难重重,那么可以看看Buildbot。 python的buildbot站点: http://buildbot.python.org/all/#/ Buildbot是开源的自动化软件构建,测试,发布流程的框架。 Bui...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16