当前位置: 首页 > 面试题库 >

请你来说一说协程?

贺宏富
2023-03-14
本文向大家介绍请你来说一说协程?相关面试题,主要包含被问及请你来说一说协程?时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

1、概念:

协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。

例如:

def A() :
print '1'
print '2'
print '3'
def B() :
print 'x'
print 'y'
print 'z'

由协程运行结果可能是12x3yz。在执行A的过程中,可以随时中断,去执行B,B也可能在执行过程中中断再去执行A。但协程的特点在于是一个线程执行。

2)协程和线程区别

那和多线程比,协程最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。

第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

3)其他

在协程上利用多核CPU呢——多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。

Python对协程的支持还非常有限,用在generator中的yield可以一定程度上实现协程。虽然支持不完全,但已经可以发挥相当大的威力了。

 类似资料:
  • 本文向大家介绍请你来说一说http协议相关面试题,主要包含被问及请你来说一说http协议时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)HTTP协议: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。   HTTP是一个基于TCP/IP通信协议来

  • 本文向大家介绍请你说一说epoll原理?相关面试题,主要包含被问及请你说一说epoll原理?时的应答技巧和注意事项,需要的朋友参考一下 调用顺序: int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struc

  • 本文向大家介绍请你来说一下fork函数?相关面试题,主要包含被问及请你来说一下fork函数?时的应答技巧和注意事项,需要的朋友参考一下 Fork:创建一个和当前进程映像一样的进程可以通过fork( )系统调用: #include <sys/types.h> #include <unistd.h> pid_t fork(void); 成功调用fork( )会创建一个新的进程,它几乎与调用fork(

  • 本文向大家介绍请你说一说C++两种map?相关面试题,主要包含被问及请你说一说C++两种map?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: unordered_map(哈希表)和map(红黑树)

  • 本文向大家介绍请你说一说Top(K)问题?相关面试题,主要包含被问及请你说一说Top(K)问题?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、直接全部排序(只适用于内存够的情况) 当数据量较小的情况下,内存中可以容纳所有数据。则最简单也是最容易想到的方法是将数据全部排序,然后取排序后的数据中的前K个。 这种方法对数据量比较敏感,当数据量较大的情况下,内存不能完全容纳全部数据,这种方法

  • 本文向大家介绍请你说一说HTTP返回码相关面试题,主要包含被问及请你说一说HTTP返回码时的应答技巧和注意事项,需要的朋友参考一下 参考回答: HTTP协议的响应报文由状态行、响应头部和响应包体组成,其响应状态码总体描述如下: 1xx:指示信息--表示请求已接收,继续处理。 2xx:成功--表示请求已被成功接收、理解、接受。 3xx:重定向--要完成请求必须进行更进一步的操作。 4xx:客户端错误