Python多线程编程

纸上得来终觉浅,绝知此事要躬行。

Python多线程编程

1. 基础知识

学习多线程、多进程编程之前,必须要先补充或者复习一下相关的基础知识,这样到后面应用的时候,就能够比较顺利了。其实对我来说,基础知识最好使用实体书籍,因为这才是心血的结晶,而并不是像培训班老师讲的那些,他们大多数都在瞎扯淡。

1.1 进程和线程

Python多线程编程

什么是进程

  • Linux 是一个多用户、多任务的操作系统,这就意味着一次可以运行一个以上的程序,每个占用一定时间运行的程序就叫一个进程。你运行的每一个命令会至少启动一个新进程,还有很多一直运行着的系统守护进程,用以维持系统的正常运作。
  • 但是个人电脑甚至服务器的 CPU 内核是有限的,而进程数会要远大于 CPU 个数,那怎么执行多任务呢?答案就是操作系统轮流让各个任务进程交替执行,任务轮流切换到前台,执行 0.01 秒后让出并切换到其他任务上,就这样反复执行下去。本质上每个任务都是交替执行的,但是由于 CPU 的执行速度实在是太快了,使用者的感觉好像所有的任务都在同时执行一样。

什么是线程

  • 有些进程还不止同时干一件事,比如打开浏览器虽然是一个进程,它可以同时访问多个网页,能输入网址,填写表单,鼠标点击翻页等等。在一个进程内部,要同时干多件事,就需要同时运行多个子任务,我们把进程内的这些子任务就称为线程

提高执行效率

  • 多进程模式
    • 启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务
  • 多线程模式
    • 启动一个进程,进程内启动多个线程,这样多个线程也可以一块执行多个任务
  • 多进程+多线程模式
    • 启动多个进程,每个进程再启动多个线程,这样就能够更快、更多的执行多个任务