当前位置: 移动技术网 > IT编程>脚本编程>Python > 协程

协程

2018年01月19日  | 移动技术网IT编程  | 我要评论

邮政国内小包单号查询,吴存荣这狗官也能升,汪用和

引言:
对于单线程下,我们不可避免程序中出现io操作,但如果我们能在自己的程序中(即用户程序级别,而非操作系统级别)控制单线程下的多个任务能在一个任务遇到io阻塞时就切换到另外一个任务去计算,这样就保证了该线程能够最大限度地处于就绪态,即随时都可以被cpu执行的状态,相当于我们在用户程序级别将自己的io操作最大限度地隐藏起来,从而可以迷惑操作系统,让其看到:该线程好像是一直在计算,io比较少,从而更多的将cpu的执行权限分配给我们的线程。
协程的本质就是在单线程下,由用户自己控制一个任务遇到io阻塞了就切换另外一个任务去执行,以此来提升效率。为了实现它,我们需要找寻一种可以同时满足以下条件的解决方案:

#1. 可以控制多个任务之间的切换,切换之前将任务的状态保存下来,以便重新运行时,可以基于暂停的位置继续执行。

#2. 作为1的补充:可以检测io操作,在遇到io操作的情况下才发生切换
介绍:
协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。
单线程实现并发用协程:
单线程开协程适用于IO密集型,不适用于计算密集型;遇到IO再切换才有意义
优点:
1. 协程的切换开销更小,属于程序级别的切换,操作系统感知不到,因而更加轻量级
2. 单线程内就可以实现并发的效果,最大限度地利用cpu

例子:协程实现单线程多并发FTP程序:http://www.cnblogs.com/linzetong/p/8297834.html

 

转至:http://www.cnblogs.com/linhaifeng/articles/7429894.html

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网