python基础--进程,线程,协程对比
2018-12-11 23:01
387 查看
进程,线程,协程对比
1.进程是资源分配的单位
2.线程是操作系统调度的单位
3.进程切换需要的资源最大,效率低
4.线程切换需要的资源一般,效率一般
5.协程切换任务资源很小,效率高
6.多进程,多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中,所以是并发
协程(coroutines),是一种比线程(线程的上下文切换?)更加轻量级的存在
正如一个进程可以拥有多个线程一样,
一个线程也可以拥有多个协程
最重要的是,协程不是被操作系统内核所管理,
而完全是由程序所控制(yeild)(也就是在用户态执行),
(yield 是python当中的语法。当协程执行到yield关键字时,
会暂停在那一行,等到主线程调用send方法发送了数据,
协程才会接到数据继续执行,但是,yield让协程暂停,
和线程的阻塞是有本质区别的。协程的暂停完全由程序控制,
线程的阻塞状态是由操作系统内核来进行切换)
这样带来的好处就是性能得到了很大的提升,
不会像线程切换那样消耗资源
有哪些编程语言应用到了协程呢?我们举几个栗子:
Lua语言
Lua从5.0版本开始使用协程,通过扩展库coroutine来实现。
Python语言
正如刚才所写的代码示例,python可以通过 yield/send
的方式实现协程。
Go语言
Go语言对协程的实现非常强大而简洁,
可以轻松创建成百上千个协程并发执行。
Java语言
如上文所说,Java语言并没有对协程的原生支持,
但是某些开源框架模拟出了协程的功能,有兴趣的小伙伴可以看一看Kilim框架的源码:
https://github.com/kilim/kilim
相关文章推荐
- Python进程,线程以及协程对比
- Python基础:进程、线程、协程(1)
- python基础===进程,线程,协程的区别(转)
- [python笔记]进程,线程和协程的对比
- Python基础—线程、进程和协程
- Python基础学习(5)网络编程socket、文件上传、粘包问题、socketserver、IO多路复用、线程与进程、进程池、线程池、上下文管理、协程
- python——进程线程、与协程基础概述
- Python基础[线程,进程,协程]
- python基础之线程、进程、协程
- 【Python】进程线程协程对比
- 关于Python的进程线程协程之threading模块(三)Event对象
- python基础-守护进程、守护线程、守护非守护并行
- Python3之线程、进程、协程
- Python中单线程、多线程与多进程的效率对比实验
- 突破python缺陷,实现几种自定义线程池 以及进程、线程、协程的介绍
- Python的协程,线程,进程的理解及实现
- Python之路【第七篇】:线程、进程和协程
- Python进阶(5)_进程与线程之协程、I/O模型
- Python 中的进程、线程、协程、同步、异步、回调
- Python线程、进程、进程池、协程