线程和进程是计算机任务处理中的两个概念,一个进程相当于计算机处理的一个任务,一个任务可以找通过多种方式或者找多个不同的人去执行,每一个人或者每一种方式就是一种线程

  • 多进程问题涉及的是任务的分工问题,一般来说是将一个复杂的任务拆分成多个子任务,每一个子任务执行的时候其它子任务也可以同时执行,例如分布式计算。这种分工的好处是可以保证资源的充分利用,但是如果父任务的执行出现错误或者计算错误,那么后边的任务也会受到影响。多进程问题的优化主要是一个多任务管理的方式问题,一般常用的一种方法是队列
  • 多线程问题主要涉及到的是协作问题,通过建立多个可以独立完成任务的线程来完成任务,很明显的一个优势是运行的效率会比较高。但是当线程之间如果使用同样的变量时则会存在并发的风险,这会大大降低多线程工作的效率,一般来说多线程的优化问题主要是如何减少线程之间的相互影响,一种比较有效的方式就是加一层锁,限制做个线程同时对一个变量进行更改的权利

在 Python 中,线程不能加速受 CPU 限制的任务,原因是标准 Python 系统中使用了全局解释器锁(GIL)。 GIL 的作用是避免 Python 解释器中的线程问题,但是实际上会让多线程程序运行速度比对应的单线程版本甚至是多进程版本更慢。

对于线程和进程的理解主要可以借助CPU计算的问题,这里放一个视频辅助理解: