聊聊python的多进程、多线程(概念、特点、比较、使用场景)

进程概念
一个运行起来的程序,就拥有了系统给分配的资源(例如内存、CPU、网卡、声卡等),所以说它是操作系统分配资源的基本单位,它给程序的运行(线程)提供了资源和环境

对进程应用场景
Io密集型操作(cpu操作指令比较多、如科学计算、位数多的浮点运算)
特点:
进程是不共享资源的
进程切换需要的资源很大,效率很低
进程是并行
进程通讯
如Queue、Pipe、Manager、Event
这里只讲Queue
Queue是一个先进先出的队列,在主进程中创建一个Queue对象,并作为参数传入子进程,主进程和子进程之间通过put()放入数据,get()取出数据,执行了get()函数后队列中的数据会被同时删除

线程概念
线程就是进程内部的一条执行线索(是程序执行流的最小单元,是被系统独立调度和分派的基本单元)是cpu调度的基本单位
在进程内部默认存在的一个线程 – 主线程
线程使用场景:
适合io密集型的任务,如socket server网络并发这一类,爬虫(io操作不占用cpu,从硬盘、网络、内存读取数据都是io)

特点:
一个进程最少有一个线程
线程的执行顺序是无序的
线程是并发
线程是共享全局变量的(资源),可以用互斥锁解决资源共享,线程竞争资源问题,线程使用前先上锁,使用完后再去释放锁

多任务的执行方式: 并发和并行
并发和并行都可以让我们感觉到同一段时间内,多个程序在运行
实际上,
并行:同一时刻(即同一个时间点内),多个任务在一起执行(核数大于或等于任务数)
并发:同一段时间内,不断地在多个任务中进行切换执行,每个任务执行极小的一个时间片(核数小于任务数)

协程:
用户态的轻量级线程,调度有用户控制,拥有自己的寄存器上下文和栈,切换基本没有内核切换的开销,切换灵活。
协程是python另外一种多任务的方式,比线程占用的资源小
自带cpu上下文,
协程是在一个线程中,所以是并发
协程切换任务资源很小,效率高

微线程 在不开辟线程的情况下 完成多个任务"交替执行" 网络爬虫
协程是一个特殊的生成器
yield 返回值 生成器
yield 协程(没返回值就是协程)还有一个模块gevent为我们自动切换协程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值