开始使用Python进行异步处理

异步编程让Python程序能更有效地处理网络和I/O操作,避免等待时间,提高效率。通过关键词`async`和`await`,开发者可以创建协程,配合事件循环和任务管理,实现非阻塞的并发执行。本文介绍了何时使用异步、如何使用`asyncio`库,并对比了异步与线程、多处理的区别。
摘要由CSDN通过智能技术生成

异步编程(简称异步)是许多现代语言的功能,它使程序可以处理多个操作,而无需等待或挂断其中的任何一个。 这是一种有效处理网络或文件I / O等任务的明智方法,其中程序的大部分时间都花在等待任务完成上。

考虑一个打开100个网络连接的Web抓取应用程序。 您可以打开一个连接,等待结果,然后打开下一个连接并等待结果,依此类推。 程序运行的大部分时间都花在等待网络响应上,而不是在做实际的工作。

[ 同样在InfoWorld上:每个Python开发人员都有24个Python库 ]

异步为您提供了一种更有效的方法:一次打开所有100个连接,然后在返回结果时在每个活动连接之间切换。 如果一个连接没有返回结果,请切换到下一个,依此类推,直到所有连接都返回了其数据。

异步语法现在已成为Python的标准功能,但是习惯于一次做一件事的长期Pythonista使用者可能难以解决。 在本文中,我们将探讨异步编程在Python中的工作方式以及如何使用它。

请注意,如果要在Python中使用异步,最好使用Python 3.7或Python 3.8(撰写本文时的最新版本)。 我们将使用这些语言版本中定义的Python异步语法和辅助函数。

何时使用异步编程

通常,使用异步的最佳时机是当您尝试执行具有以下特征的工作时:

  • 工作需要很长时间才能完成。
  • 延迟涉及等待I / O(磁盘或网络)操作,而不是计算。
  • 该工作涉及到一次执行许多I / O操作, 或者当您还试图完成其他任务时发生一项或多项I / O操作。

异步使您可以并行设置多个任务并有效地遍历它们,而不会阻塞应用程序的其余部分。

可以很好地与异步工作的一些任务示例:

  • 网页抓取,如上所述。
  • 网络服务(例如,Web服务器或框架)。
  • 协调来自多个源的结果的程序,这些结果需要很长时间才能返回值(例如,同时进行的数据库查询)。

重要的是要注意,异步编程不同于多线程或多处理。 异步操作都在同一个线程中运行,但是它们可以根据需要相互转化,这使得异步处理比线程或多处理多种任务的效率更高。 (有关此内容,请参见下文。)

[ 同样在InfoWorld上:Python 3.8中最好的新功能 ]

Python async await</

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值