小猿圈分享-python协程与golang协程的区别

本文探讨了Python和Go语言中进程、线程和协程的区别,强调协程在避免内核上下文切换方面的优势。Python协程通过yield和async/await实现,Go协程(goroutines)使用go关键字,并通过channel进行通信。Go的协程调度更高效,能更好地利用多核资源,而Python协程受限于GIL,无法充分利用多核。
摘要由CSDN通过智能技术生成

最近经常有同学在小猿圈网站留言说:小猿圈网站上边的课程太多了,而且全部免费,自己就忍不住都想学习,尤其是学习了python和go之后,就有些混淆了概念,今天小猿圈就给大家分享一下python和go语言中进程、线程、协程的区别。

进程的定义:
进程,是计算机中已运行程序的实体。程序本身只是指令、数据及其组织形式的描述,进程才是程序的真正运行实例。

线程的定义:
操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

进程和线程的关系:
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
CPU的最小调度单元是线程不是进程,所以单进程多线程也可以利用多核CPU.
协程的定义:
协程通过在线程中实现调度,避免了陷入内核级别的上下文切换造成的性能损失,进而突破了线程在IO上的性能瓶颈。

协程和线程的关系
协程是在语言层面实现对线程的调度,避免了内核级别的上下文消耗。
python协程与调度
Python的协程源于yield指令。yield有两个功能:
• yield item用于产出一个值,反馈给next()的调用方。
• 作出让步,暂停执行生成器,让调用方继续工作,直到需要使用另一个值时再调用next()。
import asyncio

async def compute(x, y):
print(“Compute %s + %s …” % (x, y))
await asyncio.sleep(x + y)
return x + y

async def print_sum(x, y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值