Python 中的进程与线程、并行与并发

进程与线程

进程是计算机资源分配的最小单元,指程序执行时的一个实例。

线程是程序执行的最小单位,是计算机中可以被 CPU 调度的最小单元。

进程之间资源相互独立,有不同的内存空间。

一个进程可以有多个线程,同一个进程中的线程共享此进程中的资源。

并行与并发

并行是指两个或者多个事件在同一时刻发生。

并发是指两个或多个事件在同一时间间隔内发生。

Python 中的 GIL

Python 全局解释器锁(GIL)是一个互斥锁,用于保护对 Python 对象的访问,防止同一进程中的线程同时执行。因为 GIL 的存在,实际上 Python 进程不能并行运行线程,只能并发运行线程。

GIL 是必要的,因为Python 的解释器不是线程安全的。在线程中访问 Python 对象时,每次都会执行这个全局锁。在任何给定的时间,只有一个线程可以为特定对象获取锁。

Python 中的并行任务

由于 GIL 的存在,我们想利用多核系统并最终在真正执行并行任务,我们需要执行多进程而不是多线程。因为每个进程都将拥有自己的解释器和自己的 GIL 。

Python 中的多任务

由于线程之间资源是共享的以及 GIL 的存在,因此多线程适用于 I/O 密集型任务。

由于不同线程可以调用不同的 CPU 资源,因此多进程适用于 CPU 密集型任务。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值