一.基础原理 二.基本函数 三.爬虫实现 四.web服务器与客户端实现…
文档资源 http://sdiehl.github.io/gevent-tutorial/ 一.协程实现 线程和协程 既然我们上面也说了,协程也被称为微线程,下面对比一下协程和线程: 线程之间需要上下文切换成本相对协程来说是比较高的,尤其在开启线程较多时,但协程的切换成本非常低. 同样的线程的切换更多的是靠操作系统来控制,而协程的执行由我们自己控制 我们通过下面的图更容易理解: 从上图可以看出,协程只是在单一的线程里不同的协程之间切换,其实和线程很像,线程是在一个进程下,不同的线程之间做切换,这…
一.线程 1.概念 线程是程序执行流的最小执行单位,是行程中的实际运作单位. 进程是一个动态的过程,是一个活动的实体.简单来说,一个应用程序的运行就可以被看做是一个进程,而线程,是运行中的实际的任务执行者.可以说,进程中包含了多个可以同时运行的线程. 2.特点 线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所 拥有的全部资源. 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行 3 线程的生命周期 线程被创建以后不是直接就…
一 多线程实现 线程模块 - 多线程主要的内容:直接进行多线程操作,线程同步,带队列的多线程: Python3 通过两个标准库 _thread 和 threading 提供对线程的支持. _thread 提供了低级别的.原始的线程以及一个简单的锁,它相比于 threading 模块的功能还是比较有限的. threading 模块除了包含 _thread 模块中的所有方法外,还提供的其他方法: threading.currentThread(): 返回当前的线程变量. threading.enum…
出租车队运营仿真 创建几辆出租车,每辆车会拉几个乘客,然后回家.出租车首先驶离车库,四处徘徊,寻找乘客:拉到乘客后,行程开始:乘客下车后,继续四处徘徊. 程序解释 程序的输出示例: 创建 3 辆出租车的输出示例.-s 3 参数设置随机数生成器的种子,这样在调试和演示时可以重复运行程序,输出相同的结果.不同颜色的箭头表示不同出租车的行程. 最值得注意的一件事是,3 辆出租车的行程是交叉进行的.那些箭头是我加上的,为的是让你看清各辆出租车的行程:箭头从乘客上车时开始,到乘客下车后结束.有了箭头,能直…
一.yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交出CUP的使用权,代码段并没有直接结束,而是在此处中断. 当调用send()或者next()方法之后,yield可以从之前中断的地方继续执行. 在一个函数中,使用yield关键字,则当前的函数会变成生成器. 实例解析: 生成一个斐波那契数列. def fib(n): index = 0 a = 0…
一.多进程实现 multiprocess.process模块 process类 Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,表示一个子进程中的任务(尚未启动) 强调: 1. 需要使用关键字的方式来指定参数 2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号   参数介绍: group参数未使用,值始终为None target表示调用对象,即子进程要执行的任务 args表示调…
相关概念: 协程:一个线程并发的处理任务 串行:一个线程执行一个任务,执行完毕之后,执行下一个任务 并行:多个CPU执行多个任务,4个CPU执行4个任务 并发:一个CPU执行多个任务,看起来像是同时执行 并发真正的核心/本质:切换并且保持状态 多线程的并发:3个线程处理10个任务,如果线程1处理的这个任务,遇到阻塞,cpu被操作系统切换到另一个线程, 应用示例:单个CPU:10个任务,让你给我并发的执行这10个任务 方式一:开启多进程并发执行,操作系统+保持状态 方式二:开启多线程并发执行,操作…
1. 背景 理论上来说:单个进程的多线程可以利用多核. 但是,开发Cpython解释器的程序员,给进入解释器的线程加了锁. 2. 加锁的原因: 当时都是单核时代,而且cpu价格非常贵. 如果不加全局解释器锁, 开发Cpython解释器的程序员就会在源码内部各种主动加锁,解锁,非常麻烦,各种死锁现象等等.为了省事儿,直接进入解释器时给线程加一个锁. 优缺点: 优点: 保证了Cpython解释器的数据资源的安全.缺点: 单个进程的多线程不能利用多核. Jpython没有GIL锁,pypy也没有GIL…
什么是线程 标准描述开启一个进程:开启一个进程:进程会在内存中开辟一个进程空间,将主进程的资料数据全部复制一份,线程会执行里面的代码. ***进程是资源单位, 线程是执行单位:是操作系统调度的最小单元,是进程中的实际运作单位. 线程vs进程 开启进程的开销非常大,比开启线程的开销大很多. 开启线程的速度非常快.要快几十倍到上百倍. 同一进程内线程与线程之间可以共享数据,进程与进程之间需借助队列等方法实现通信. 线程的应用 单个进程开启三个线程.并发的执行任务. 并发:一个cpu 看起来像是同时执…