Python:实现多任务,多进程,多线程,多协程的关系和应用区别

关于多任务:

并发(任务数 > cpu核数):假的多任务,通过时间片旋转或优先级调度,让程序切换的速度足够快,使人产生在同时运行多个任务的假象

并行(cpu核数 >= 任务数):真的多任务,每一个cpu都各自运行一个任务

·

● 在python中运用进程,线程,协程所需要导入的模块分别是:

进程multiprocessing

线程threading

协程gevent(最常用的)

以上在程序中都是并发执行,通过在极短的时间内cpu多次重复调用不同的任务来实现多任务。进程和线程根据CPU的核数,也可能出现并行的情况。但是协程是在一个线程里所以一定只是并发执行。

·

进程 是资源分配的单位,线程 是系统调度的单位

·

关系描述:

● 当执行一个程序,系统会自动分配内存资源加载数据,实际上是开启一个进程,分配新的内存空间创建多个新进程分别执行所要执行的任务可实现多任务。

● 每一个进程都会有一个线程从上向下读取代码执行代码,这个线程叫做主线程,在一个进程中创建多个子线程分别执行对应的代码段可实现多任务。

● 利用线程执行代码遇到延时操作时,在等待的期间分配线程去做其他的任务从而实现多任务,这种实现操作叫做协程。

·

各自的优缺点和应用范围:

进程

切换需要的资源最大,效率最低,每次创建新进程时会复制一遍所有的代码和数据,但是是实现多任务的方法中最为稳定的方法,当所要处理的任务数量未知或庞大时,可通过创建进程池提供指定数量的进程供用户循环使用。

·

线程(不考虑有GIL阻碍多线程)

依赖于进程,当进程死亡时,线程必死,当每个子线程所要执行的动作过于频繁时,可能导致数据紊乱(可用互斥锁解决问题),切换需要的资源比进程少且共享全局变量

·

协程

依赖于线程,当线程死亡时,协程必死,协程切换任务占用的资源最少,效率最高,执行不同的任务就像调用不同的函数一样快捷,但是最不稳定,会随着线程的死亡而死亡。

在程序进行延时操作时(比如下载url,time.sleep(),accept()等待接收等操作)线程会等待操作完成才继续运行,而协程的作用就是让线程在这等待的时间里先去做其他的任务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此时一位小白路过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值