协程类似于线程, 但是线程是操作系统底层提供的,而协程是平台自己提供的。
协程是基于线程的,一个协程库底层还是使用的操作系统的线程来支持,然后这个库自己完成任务调度的事情,而不依赖于系统的调度。
协程的优点你贴的链接里已经说了,但是缺点就是实现比较复杂,并且实际性能会低于直接使用线程。
协程的数量理论上可以是无限个,而且没有线程之间的切换动作,执行效率比线程高。
协程不需要“锁”机制,即不需要lock和release过程,因为所有的协程都在一个线程中。
相对于线程,协程更容易调试debug,因为所有的代码是顺序执行的。
理论上性能应该更好,但是因为协程的实现问题,在正确使用线程的基础上,线程的性能会比协程好,因为协程要自己在线程的基础上做调度,实际上还是用到了锁,而且协程要利用好多核的优势难度也大,而线程在数量合理的情况下则可能非常好的利用多核优势。
def 协程1():
pass
def 协程2():
pass
def 协程3():
pass
def 协程n():
pass
while 1:
协程1()
协程2()
协程3()
协程n()
协程就是一个个函数,然后死循环调用,
以上就是协程的基本思想。没什么神秘的~
需要配合异步IO使用,避免阻塞~