摘要: 知识点: 之前写的四种方法实现并发服务效率都还是低,早期的服务器采用的是select和poll方式,select这种方式的特点是轮询所有套接字去一个个看有没有事件发生,但是装套接字的列表长度是有限制的,而且轮询方式效率低,poll方式只是解决了装套接字这个列表的长度限制,但也是采用轮询的方式。目前实 阅读全文
posted @ 2018-08-06 14:55 上海小盖伦 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 知识点:1、使用多线程,多进程,协程完成web并发服务器 2、单进程-单线程-非堵塞也可以实现并发服务器 1、多进程和协程的代码在下面注释掉的部分,我把三种写在一起了 2、单进程-单线程-非堵塞也可以实现并发服务器 阅读全文
posted @ 2018-08-03 19:15 上海小盖伦 阅读(1351) 评论(0) 推荐(0) 编辑
摘要: 知识点:http协议:它是基于tcp协议的,浏览器访问服务器,服务器把资源回给浏览器,这个过程都是遵循http协议的,否则无法完成,http早些年是1.0版本,现在基本上都是1.1版本了,俩个版本的区别就是1.0使用的是短连接,早些年的网站比较简单,短连接通信没啥大问题,但是现在的网站各种炫酷复杂, 阅读全文
posted @ 2018-08-03 18:18 上海小盖伦 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 知识点:协程在博客前面的章节已经说了,特点是效率高,占用资源小,这里就用协程做一个高效率爬虫图片的案例 1、我这里就爬一百多张意思一下: 运行效果: 阅读全文
posted @ 2018-07-30 19:21 上海小盖伦 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 知识点:生成器是一种特殊的迭代器,使用关键字yield来生成就可以,十分简单 1、示例代码: 2、使用yield创建多任务: 3、使用greenlet创建多任务,greenlet是对yield的封装: 4、使用gevent创建多任务,gevent是对greenlet的封装,以后若使用协程创建多任务, 阅读全文
posted @ 2018-07-30 16:16 上海小盖伦 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 知识点:什么叫迭代器?说起for遍历大家应该很熟悉,for i in xxx,in后面的对象是一个可迭代的对象,可迭代的对象不一定是迭代器,如列表,字典,字符串等这些都是可迭代对象,迭代器是调用了对象内部的__iter__方法和__next__方法,(不能说只要是迭代器就一定调用了__iter__和 阅读全文
posted @ 2018-07-30 13:27 上海小盖伦 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 知识点:我们要实现多进程去下载一个文件下的几十个文件,如果按照之前说的有几个任务就创建几个进程,那么我下在几万个文件,那么就要创建几万个进程?显然是不可能的,系统根本承受不了,所以这里要用到进程里面的另外一个方式-进程池。 进程池:就是创建一个进程池,我把要执行的任务放进进程池,但是进程池存放任务的 阅读全文
posted @ 2018-07-26 14:15 上海小盖伦 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 前言:之前说过,多个进程之间是不能共享全局变量的,那么怎么解决这个问题呢?通过队列Queue去解决这个问题 1、看代码演示,解释看注解: 阅读全文
posted @ 2018-07-25 19:19 上海小盖伦 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 前言:之前说的多个线程之间是共享全局变量的,但是进程之间是不共享全局变量的 看运行结果会发现:test1修改全局变量,只在test1局部生效,但是实际上的list值并未改变 阅读全文
posted @ 2018-07-25 16:31 上海小盖伦 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 知识点:进程号,简称pid,每启动一个程序都会有一个唯一的pid标记这个程序,当程序关闭时,进程就消失,也就没有进程号了 1、如何在代码程序中查看进程号?看代码: 运行效果如下: 主进程的进程号:26716,父进程号:22848test1进程号:25784,父进程号:26716test2进程号:26 阅读全文
posted @ 2018-07-25 16:08 上海小盖伦 阅读(852) 评论(0) 推荐(0) 编辑