一、协程:
单线程实现并发
在应用程序里控制多个任务的切换+保存状态
优势:
应用程序级别速度要远远高于操做系统的切换
缺点:
多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地
该线程内的其余的任务都不能执行了
一旦引入协程,就须要检测单线程下全部的IO行为,
实现遇到IO就切换,少一个都不行,觉得一旦 一个任务阻塞了,整个线程就阻塞了,
其余的任务即使是能够计算,可是也没法运行了
二、协程序的目的:
想要在单线程下实现并发
并发指的是多个任务看起来是同时运行的
并发=切换+保存状态python
yield实现协程网络
yield能够实现协程,可是没法作出有意义的提高效率的协程并发
gevent模块的使用spa
from gevent import monkey,spawn;monkey.patch_all() import time def eat(name): print('%s eat 1' %name) time.sleep(3) print('%s eat 2' %name) def play(name): print('%s play 1' %name) time.sleep(4) print('%s play 2' %name) start=time.time() g1=spawn(eat,'egon') #内置的一个模块 g2=spawn(play,'zmy') g1.join() g2.join() # eat('ooo') # play('rrr') print(time.time() - start) print(g1) print(g2)
练习操作系统
等补全线程
网络IO模型介绍协程
阻塞IO模型blog
非阻塞IO模型event