• 文章目录

    • 1 异步编程与python中的异步编程
          • 为什么需要异步?
          • 什么是异步编程?
          • 同步和异步的区别
          • 阻塞和非阻塞的区别
        • 一句话总结
    • 2 Python中的异步编程
        • 2.1 Python中的异步编程基础
          • 2.1.1 什么是单线程模型?
          • 2.1.2 什么是多线程模型?
        • 2.2 协程的概念和特点
        • 一句话总结


1 异步编程与python中的异步编程

  • 同步 vs. 异步
  • 阻塞 vs. 非阻塞
为什么需要异步?
  • 当我们编写程序时,我们通常需要与外部世界交互,比如读写文件、发送网络请求等。
  • 传统的编程模型中,我们通常使用同步阻塞的方式来进行这些操作。也就是说,在执行一个操作时,程序会一直等待该操作完成后才会继续执行下一个操作。
  • 但是在现代的应用程序中,我们需要同时处理多个操作,并希望这些操作能够尽可能高效地执行。
  • 这就需要异步编程模型的支持。
什么是异步编程?
  • 异步编程模型是指在执行程序时,如果一个操作需要等待一段时间才能完成,那么程序不会一直阻塞等待该操作完成,而是会 先转而执行其它操作,等到该操作完成后再回来继续执行。
  • 这样就可以让程序在等待操作完成的同时,同时执行其它操作,从而提高了程序的效率。
同步和异步的区别
  • 同步和异步的区别在于操作执行的方式不同。
  • 同步操作会一直阻塞程序,直到该操作完成后才会继续执行下一个操作。
  • 异步操作则不会阻塞程序,而是在执行操作的同时可以继续执行其它操作,等到该操作完成后再回来继续执行。
阻塞和非阻塞的区别
  • 阻塞和非阻塞的区别在于程序等待一个操作完成的方式不同。
  • 阻塞操作 会一直等待 该操作完成后才会继续执行下一个操作。
  • 而非阻塞操作则会立即返回,告诉程序该操作 已经启动,但是操作 完成的时间不确定,程序需要定期轮询该操作是否已经完成。非阻塞操作可以让程序在等待操作完成的同时,同时执行其它操作,从而提高了程序的效率。

一句话总结

  • 同步 - 阻塞 - 会一直等待该操作完成后才会继续执行下一个操作。
  • 异步 - 非阻塞 - 会立即返回,告诉程序该操作已经启动

2 Python中的异步编程

  • 单线程模型 vs. 多线程模型
  • 协程的概念和特点

2.1 Python中的异步编程基础

  • 在Python中,我们可以使用异步编程模型来提高程序的效率。
  • Python中的异步编程模型主要分为单线程模型多线程模型
  • 也可以说是实现异步的两种方式:1. 单线程 2. 多线程

2.1.1 什么是单线程模型?

  • 单线程模型是指使用单个线程来处理多个任务。
  • 在单线程模型中,程序会 轮流执行 每个任务,每个任务执行的时间非常短,从而让程序看起来像是在同时执行多个任务。(分时共享)
  • 单线程模型的 优点程序结构简单,可以避免线程切换和锁等多线程编程中的复杂性问题
  • 但是其 缺点 是处理 高负载的任务时效率较低

2.1.2 什么是多线程模型?

  • 多线程模型是指使用多个线程来处理多个任务
  • 在多线程模型中,每个线程可以同时执行一个任务,从而提高程序的效率。
  • 但是多线程模型也存在一些问题,比如 **线程切换、锁 **等多线程编程中的问题。

2.2 协程的概念和特点

  • Python中的协程是一种 特殊的异步编程模型,它可以 在单线程模型下实现异步编程。
  • 协程可以看作是一种用户态的线程,它由程序员在代码中显式地定义,可以在运行时动态地切换任务。
  • 协程的特点是轻量级、高效率、无需锁等多线程编程中的复杂性问题,因此在Python中广泛应用于异步编程场景中。

一句话总结

  • python 中异步的两种实现方式
  • 单线程模型 - 协程是一种 特殊的异步编程模型,它可以 在单线程模型下实现异步编程。
  • 多线程模型