2018-08-06-Python全栈开发day35-事件、IO、select-part2-进程与协程

1. 协程

  进程和线程都是通过竞争来决定下一个运行的对象,协程是人为的,自定义的进行切换。

  协程可以看做一个为线程。

2.协程工作的原理yield

生成器对象yield,每次next时会返回yield后的一个对象,相对于函数,return只能一次,而yield可以多次。

 1 def test():
 2     print('ok')
 3     yield 1
 4     print('ok22')
 5     yield 2
 6 
 7 
 8 p1=test()#运行test,直接运行时并不打印函数内的print
 9 s1=p1.__next__()#next的时候指针会到yield之后
10 s2=p1.__next__()#继续next
11 print(s1)#再打印对象的值,此时得到的时yield后的值

  协程是通过yield也就是生成器来完成的

3.协程Coroutine

  通过gevent模块,通过网络访问其他资源时,如果碰到io操作,则自动切换到greenlet,等到io操作完成再回来继续执行,可以提高利用效率,但是还是单核利用,

  所以可以通过多进程+协程来完成多核利用

  

  

posted @ 2018-08-06 22:33  brownbearye  阅读(104)  评论(0)    收藏  举报