乐趣区

关于程序员:Python-什么是异步编程-1

异步编程是一种不会阻塞的编程范式。相同,申请和函数调用会在将来某个工夫以某种形式在后盾收回和执行。这使调用者有工夫执行其余流动,并在后果可用或调用者感兴趣时稍后解决收回的调用的后果。

1. 异步工作

异步意味着不同时,与同步或同时相同。在编程时,异步意味着申请动作,只管在申请时并未执行。它稍后执行。这将收回进行函数调用的申请,而不会期待调用实现。咱们能够抉择稍后查看函数调用的状态或后果。

  • 异步函数调用:申请函数在某个工夫以某种形式被调用,容许调用者复原并执行其余流动。

函数调用将以某种形式在某个工夫在后盾产生,程序能够执行其余工作或响应其余事件。这是要害。咱们无法控制申请的解决形式或工夫,只是咱们心愿在程序执行其余操作时解决它。收回异步函数调用通常会产生一些申请句柄,调用者能够应用该句柄来查看调用状态或获取后果。这通常被称为 ” 将来 ”。异步函数调用的句柄,容许查看调用状态和检索后果。

2. 异步编程

收回异步工作并进行异步函数调用称为异步编程。异步编程次要用于非阻塞 I/O,例如从与其余过程或其余零碎的套接字连贯读取和写入。非阻塞 I/O 是一种在申请读取和写入的状况下执行 I/O 的形式,只管它是异步执行的。调用者不须要期待操作实现再返回。读取和写入操作以某种形式执行(例如,由底层操作系统或基于其构建的零碎),并且操作和 / 或数据的状态稍后由调用者检索,一旦可用,或当调用者筹备好时。

因而,咱们能够看到非阻塞 I/O 与异步编程的关系。实际上,咱们通过异步编程来应用非阻塞 I /O,或者通过异步编程实现非阻塞 I /O。非阻塞 I/O 与异步编程的联合是如此广泛,以至于它通常被简称为异步 I/O。

接下来,让咱们考虑一下 Python 中的异步编程反对。

3. Python 中的异步编程

从狭义上讲,Python 中的异步编程是指发出请求而不是阻塞期待它们实现。咱们能够通过多种形式在 Python 中实现异步编程,只管有一些与 Python 并发性相干。

3.1. asyncio

第一个例子是 asyncio 模块。该模块应用 async/await 语法和带套接字和子过程的非阻塞 I/O 间接提供异步编程环境。

它是应用在事件循环中运行的协程实现的,事件循环自身在单个线程中运行。更宽泛地说,Python 提供了能够异步执行工作的线程和过程。

例如,一个线程能够启动第二个线程来执行函数调用并复原其余流动。操作系统将在某个工夫安顿并执行第二个线程,而第一个线程可能会或可能不会手动查看工作的状态。

更具体地说,PythonThreadPoolExecutorProcessPoolExeuctor 类中提供了基于执行器的线程池和过程池。这些类应用雷同的接口并通过返回 Future 对象的 submit() 办法反对异步工作。

3.2. multiprocessing

multiprocessing 模块还提供了应用 PoolThreadPool 类中的过程和线程的工作池,ThreadPoolExecutorProcessPoolExeuctor 类的前身。

这些类的性能是依据工作人员异步执行工作来形容的。它们显式地提供了用于执行工作的每种办法的同步(阻塞)和异步(非阻塞)版本。

例如,能够通过 apply() 办法同步或通过 apply_async() 办法异步收回一次性函数调用。


欢送 Star -> 学习目录


本文由 mdnice 多平台公布

退出移动版