程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程
程序和进程的区别:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念
进程的优点:提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。
进程的缺点:
- 进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。
-
进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
进程和线程的区别:
1.线程可以共享创建它的进程的地址空间;
进程有它们各自的地址空间。
2.线程可以直接访问其进程的数据段;
进程有自己的父进程的数据段副本。
3.线程可以直接与进程的其他线程通信;
进程必须使用进程间通信与同级进程通信。
4.新线程很容易创建;
新进程需要复制它的父进程。
5.线程可以控制同一进程的线程;
进程只能对子进程进行控制。
6.对主线程的更改(取消、优先级更改等)可能会影响该进程的其他线程;
对父进程的更改不会影响子进程。
GIL锁(全局解释器锁Global Interpreter Lock)
在CPython中,全局解释器锁是防止多个本机线程同时执行Python字节码的互斥体。主要是因为CPython的内存管理不是线程安全的。
GIL并不是Python的特性,Python完全可以不依赖于GIL,但是GIL是CPython的特点。