Python干货整理:多方位解析|python与golang的协程区别

本文探讨了协程的概念,与进程线程的区别,并深入比较了Python(Goroutine)和Go语言中协程的实现、特点。Python协程通过生成器和调度策略实现,适合IO密集型程序,而Go协程(goroutine)具备多核并行能力,采用抢占式调度,两者在协程通信和调度机制上也有所不同。
摘要由CSDN通过智能技术生成

什么是协程?

协程算是一种特殊的程序调用。它有两个特征:

  1. 可中断:是类似CPU的中断,CPU在这里直接释放转到其他程序断点继续执行。
  2. 可恢复:等到合适的时候,可以恢复到中断的地方继续执行

特殊之处:在执行过程中,在子程序(或者说函数)内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。

和进程线程的区别

无论是进程还是线程,都是由操作系统所管理和切换的。

进程和线程的切换完全是用户无感,从用户态到内核态再到用户态。

协程的切换完全是程序代码控制的,在用户态的切换,就像函数回调的消耗一样,在线程的栈内完成。

进程是操作系统资源分配的基本单位。

进程是程序的启动实例,拥有代码和打开的文件资源、数据资源、独立的内存空间。

线程是操作系统调度和执行的最小单位

线程从属于进程,是程序的实际执行者,一个进程至少包含一个主线程,也可以有更多的子线程,线程拥有自己的栈空间。

协程又叫微线程,但其实它和进程还有线程完全不是一个维度上的概念

python的协程(Goroutine)

协程的概念

python的协程其实是我们通常意义上的协程Gorouti

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值