有了进程为什么要有线程?
  • 一个进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。
  • 进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。

进程是资源分配的最小单位,线程是CPU调度的最小单位,每一个进程中至少有一个线程。

线程的运行会比进程的快,且 CPU 在线程之间切换 比 在进程之间切换要快,因为线程是直接被 CPU 调用的

通俗理解进程和线程: 
  • 对于一个人来说一个人就是一个进程,一个人可以做的多件事情而每一件事都是一个线程
  • 进程就是一个正在运行的程序,一个程序中有很多功能而每一个功能就是一个线程,而这些功能(线程)都给可以直接调用程序(进程)中的数据

线程是不能独立存在的,一定是存在进程中的,且一个进程里面可以有多个线程


进程是负责数据的存储,而线程负责调用和处理这些数据,且多个线程共享(使用)同一个进程的地址空间中的资源

进程就好比如是类,因为他存储着数据,而线程就好比如是类中的方法,因为他可以调用类中的属性


多个线程同一时间修改进程的同一个数据的时候,就有可能导致数据不安全,此时cpython解析器会给线程上了一把GIL锁(全局解析器锁),这样就导致了同一时间只能有一个线程访问cpu,且这时数据除特殊情况外是安全的