随笔分类 -  Day10-线程与进程

1 2 下一页
Selector 模型
摘要:1.服务器端: 客户端: 运行结果: 多连接可以并发。 多个用户接入: 阅读全文
posted @ 2017-08-18 14:47 momo8238 阅读(363) 评论(0) 推荐(0)
用select模拟一个socket server成型版2
摘要:1.字典队列测试 运行结果: 2. 服务器端代码: 客户端代码: 阅读全文
posted @ 2017-08-18 11:33 momo8238 阅读(128) 评论(0) 推荐(0)
用select模拟一个socket server成型版
摘要:1.你往output里面放什么,下次循环就出什么。 2. 1.服务器端:实现了收和发的分开进行 客户端: 运行结果:当一个客户端断开时,服务器端也会报错。下面的完整版摘自老师的博客。 2. 服务器端 客户端: 阅读全文
posted @ 2017-08-18 10:17 momo8238 阅读(153) 评论(0) 推荐(0)
用select模拟一个socket server
摘要:1, 必须在非阻塞模式下,才能实现IO的多路复用,否则一个卡住就都卡住了。(单线程下的多路复用) 先检测自己,现在没有客户端连进来,所以会卡住。 运行结果: 2. 客户端代码: 服务器端: 运行结果:fd=240 文件描述符 3. 客户端: 运行结果: 至此链接已经建立。 4.最终版本 服务器端: 阅读全文
posted @ 2017-08-17 22:20 momo8238 阅读(302) 评论(0) 推荐(0)
用select (多路复用)模拟一个 socket server
摘要:需求:用select (多路复用)模拟一个 socket server。可以接收多并发。 1. 一开始是检测自己,如果我有活动了,就说明有客户端要连我了。 运行结果:卡住了,有客户端进来时才会不卡。 2.服务器端 客户端: 运行结果: 有2个链接的情况下,无法多次接收数据 3. server端进行修 阅读全文
posted @ 2017-08-17 20:45 momo8238 阅读(336) 评论(0) 推荐(0)
IO模式
摘要:二 IO模式 刚才说了,对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段: 1. 等待数据准备 (Waiting for the data to be ready) 阅读全文
posted @ 2017-08-17 17:30 momo8238 阅读(269) 评论(0) 推荐(0)
IO多路复用
摘要:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。 一 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进程的阻塞 - 文件描述符 - 缓存 I/O 用户空间与内核空间 阅读全文
posted @ 2017-08-17 16:38 momo8238 阅读(139) 评论(0) 推荐(0)
进程、线程和协程的理解
摘要:转自 http://blog.leiqin.info/2012/12/02/%E8%BF%9B%E7%A8%8B-%E7%BA%BF%E7%A8%8B%E5%92%8C%E5%8D%8F%E7%A8%8B%E7%9A%84%E7%90%86%E8%A7%A3.html 进程、线程和协程的理解 进程、 阅读全文
posted @ 2017-08-17 08:59 momo8238 阅读(149) 评论(0) 推荐(0)
进程、线程和协程--自己的理解
摘要:1. IO 操作不占用CPU(从硬盘读数据,从网络读数据,从内存读取数据) 计算占用CPU,例如1+1=2的计算就是占用CPU的。 python 多线程,不适合CPU密集操作系统的任务,适合IO操作密集型的任务。 2. 进程、线程和协程之间的关系和区别也困扰我一阵子了,最近有一些心得,写一下。 进程 阅读全文
posted @ 2017-08-17 08:41 momo8238 阅读(388) 评论(0) 推荐(0)
Select-poll-epoll-简介
摘要:1。 Python的select()方法直接调用操作系统的IO接口,它监控sockets,open files, and pipes(所有带fileno()方法的文件句柄)何时变成readable 和writeable, 或者通信错误,select()使得同时监控多个连接变的简单,并且这比写一个长循 阅读全文
posted @ 2017-08-16 15:53 momo8238 阅读(220) 评论(0) 推荐(0)
事件驱动与异步IO--待更新
摘要:论事件驱动与异步IO 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求; (2)每收到一个请求,创建一个新的线程,来处理该请求; (3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求。(启动一个协程) 上面的几种方式 阅读全文
posted @ 2017-08-16 14:01 momo8238 阅读(152) 评论(0) 推荐(0)
Gevent-socket
摘要:1. 通过Gevent实现单线程下的多socket并发。 server 端: Client 端: 运行结果:实现了并发 2. 阅读全文
posted @ 2017-08-16 11:53 momo8238 阅读(424) 评论(0) 推荐(0)
Urllib--爬虫
摘要:1.简单爬虫 运行结果: 2.爬多个网页 运行结果: 3.测试运行时间: 运行结果:通过时间看到也是串行运行的。gevent默认检测不到 urllib 进行的是否是io操作。 4.同步与异步的时间比较: 运行时间:几乎差不多,看不出异步的优势。 5.因为gevent默认检测不到 urllib 进行的 阅读全文
posted @ 2017-08-16 11:33 momo8238 阅读(182) 评论(0) 推荐(0)
Gevent-自动挡切换
摘要:Gevent: Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。在greenlet 中用sw 阅读全文
posted @ 2017-08-16 10:53 momo8238 阅读(223) 评论(0) 推荐(0)
Greenlet-手动切换
摘要:yield()是自己写的协程,Greenlet( )是已经封装好了的协程。 协程:遇到 I/O 操作就切换到别的地方了(先去处理其他携程去了)。等原协程的 I/O 操作一完成就切回去。这样就把 I/O的时间给节省出来了。 Greenlet:手动挡 gevent: 自动挡 运行结果: 阅读全文
posted @ 2017-08-16 06:34 momo8238 阅读(220) 评论(0) 推荐(0)
协程-Greenlet
摘要:协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。 线程切换的时候会保存到CPU里面。 因此: 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上 阅读全文
posted @ 2017-08-16 06:21 momo8238 阅读(207) 评论(0) 推荐(0)
协程简介-异步IO
摘要:协程 1. 协程,又称微线程,纤程。协程是用户自己控制的,CPU根本不知道协程的存在,CPU只认识线程。 2. 线程切换的时候,会保存在CPU的寄存器里面。 协程切换的时候,却都是由用户自己的实现的。 3。在单线程下实现并发的效果,就是通过协程来完成的。例如yield() 英文名Coroutine。 阅读全文
posted @ 2017-08-15 15:31 momo8238 阅读(252) 评论(0) 推荐(0)
关于__name__=='__main__
摘要:if __name__=='__main__' : 为了区分你是主动执行这个脚本,还是从别的地方把它当做一个模块去调用。 如果是主动执行,则执行。如果是调用的,则不执行主体。 里面存放的可能是一些测试模块。 可以通过用print(__name__) 来测试 __name__ 是否等于 __main_ 阅读全文
posted @ 2017-08-15 08:11 momo8238 阅读(94) 评论(0) 推荐(0)
进程池-限制同一时间在CPU上运行的进程数
摘要:if __name__=='__main__' : 为了区分你是主动执行这个脚本,还是从别的地方把它当做一个模块去调用。 如果是主动执行,则执行。如果是调用的,则不执行主体。 1. 串行:切记切记:pool.close()必须在pool.join() 之前。 运行结果: 2. 5个一组并行执行 运行 阅读全文
posted @ 2017-08-14 17:22 momo8238 阅读(365) 评论(0) 推荐(0)
进程同步-进程内部也需要锁
摘要:进程内部也需要锁。进程之间不能相互访问,为什么还需要锁??? 因为他们是屏幕共享的,所以需要加个锁。防止打印出来是混乱的。 运行结果: 阅读全文
posted @ 2017-08-14 16:16 momo8238 阅读(274) 评论(0) 推荐(0)

1 2 下一页