龙空技术网

一文掌握Python 中的异步编程

自由坦荡的湖泊AI 137

前言:

此时小伙伴们对“python 异步执行”大约比较着重,同学们都需要知道一些“python 异步执行”的相关文章。那么小编也在网上网罗了一些关于“python 异步执行””的相关文章,希望兄弟们能喜欢,你们快快来了解一下吧!

什么是异步编程?简单来说,Python 中的异步编程允许您的程序同时执行多项操作,即使它通常在单个处理器上运行。异步编程不是等待每个任务完成后再继续下一个任务,而是让您的程序在等待某些事情发生时暂停并切换到另一个任务,例如从文件中读取数据或等待网络响应。这有助于使您的程序更加高效和响应迅速,特别是在处理涉及等待外部资源的任务时。

想象一下,您在一家繁忙的餐厅等待点餐。你知道这需要一段时间,那么你会做什么?你不会只是坐在那里盯着厨房门,对吧?相反,您可以与朋友聊天、查看手机或阅读菜单。异步编程有点类似。

为什么每个人都在谈论异步编程?借助异步编程,可以利用等待来完成另一个操作。异步编程允许程序在等待 I/O 等操作完成时暂停并切换到另一个任务。这种并发性可以显着提高性能,尤其是在进行大量 I/O 操作的应用程序中,例如 Web 服务器或网络客户端。

在深入研究之前,让我们先回顾一下并行性和并发性。

并行度:并行是指同时执行多个任务或进程。在并行系统中,任务同时执行,并且每个任务可以独立于其他任务进行。并行性通常需要多个物理或虚拟处理单元(例如CPU核心)来同时执行任务。并发:另一方面,并发性是指系统同时处理多个任务或进程的能力。与并行性不同,并发并不一定意味着任务同时执行。相反,任务可能在时间上重叠,但它们不一定同时运行。即使在单个处理单元上也可以通过交错执行任务来实现并发性。与异步编程的关系:Python 中的异步编程主要处理并发性。它允许您编写能够有效处理可能在时间上重叠的多个任务的代码,例如 I/O 密集型操作或处理多个网络请求。通过利用异步编程技术,您可以确保任务不会不必要地相互阻塞,从而提高整体效率和响应能力。例子

没有异步

# demo1.py import time def  callRajan ():     time.sleep( 4 )     print ( "Hi Rajan" ) def  callSharma ():     time.sleep( 2 )     print ( "Hi Sharma" ) def  main ():     start = time .time()     task1 = callRajan()     task2 = callSharma()     end = time.time()        print ( f"没有 asyncio 的时间为{end - start} " ) if __name__ == "__main__" :     main()

从代码片段中可以看出,执行时间为 6 秒。

#output >> python script1.py Hi Rajan Hi Sharma不使用 asyncio 所花费的时间是6.013298273086548

使用异步编程

# demo2.py import asyncio import time async  def  callRajan ():     wait asyncio.sleep( 4 )     print ( "Hi Rajan" ) async  def  callSharma ():     wait asyncio.sleep( 2 )     print ( "Hi Sharma" ) async  def  main():    start = time.time()    task1 = asyncio.create_task(callRajan())    task2 = asyncio.create_task(callSharma())    await task1    等待task2     end = time.time()    print(f“使用asyncio花费的时间是{end - start} " ) if __name__ == "__main__" :     asyncio.run(main())
在相同的函数需要 6 秒但使用异步相同的示例需要 4 秒之前,不要相信运行这两个代码片段并看到差异。
>> python demo2.py Hi Sharma Hi Rajan使用asyncio花费的时间是4.024163722991943 
何时何地可以使用异步编程?

异步编程在程序花费大量时间等待外部资源的情况下特别有用。一些常见的例子包括:

Web 服务器:同时处理多个传入请求。网页抓取:有效地从多个网站获取数据。GUI 应用程序:在执行耗时的任务时确保响应能力。网络客户端:同时向远程服务器发出多个请求。数据处理:并行化 I/O 密集型操作以加快执行速度。

标签: #python 异步执行 #python 异步执行方法 #python的异步编程