python中io多路复用与进程线程的关系_12_进程,线程,协程,IO多路复用的区别

1.进程

1.进程可以使用计算机多核

2.进程是资源分配的单位

3.进程的创建要比线程消耗更多的资源效率很低

4.进程空间独立,数据安全性跟好操作有专门的进程间通信方式

5.一个进程可以包含多个线程,线程共享进程资源

6.进程有自己特有资源

7.多进程根据cpu核数不一样可能是并行的

2.线程

1.线程可以使用计算机多核

2.线程是操作系统调度的单位

3.线程切换从系统层面保存和恢复CPU上下文以及每个线程自己的缓存Cache等数据,切换时需要的资源一般效率一般

4.线程使用全局变量通信,必须要和同步互斥机制配合防止产生资源争夺

5.一个线程中可以包含多个协程函数,协程函数共享线程资源

6.线程有自己特有资源

7.多线程根据cpu核数不一样可能是并行的

3.协程

1.协程只能用到计算机单核

2.协程对事件的监听是在应用层完成,没有占有到内核资源

3.协程的切换通过应用层记录程序的上下文栈区,因此切换任务资源很小效率高

4.协程无需进行同步互斥操作,对IO并发性极好

5.可以通过调度时的参数实现一个协程函数完成多协程并发

6.协程的特有资源即调用时传递的参数

7.协程是在一个线程中所以是并发

4.IO多路复用

1.IO多路复用只能用到计算机单核

2.IO多路复用对事件的监听是在内核中完成的,占用到一定的内核资源

3.IO多路复用切换是通过内核的上下文栈区,因此切换任务资源很小效率高

4.IO多路复用无需进行同步互斥操作,对IO并发性极好

5.可以通过调度时的参数实现一个IO多路复用函数完成多IO多路复用并发

6.IO多路复用的特有资源即调用时传递的参数

7.IO多路复用是在一个线程中所以是并发

5.使用场景

1.需要创建较多的并发任务比较简单线程比较合适

2.如果程序间数据资源使用重叠比较多,要考虑到线程锁是否需要更复杂的逻辑

3.如果多个任务无关联性,不易用多线程将其融入到一个进程中

4.Python线程不适用语计算密集型并发,适合IO密集型并发

原文链接:https://www.cnblogs.com/tangxuecheng/p/13634589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值