关于程序员:Python-异步-常见反对意见24

32次阅读

共计 895 个字符,预计需要花费 3 分钟才能阅读完成。

动动发财的小手,点个赞吧!

Asyncio 和协程可能不是解决程序中所有并发问题的最佳解决方案。话虽这么说,但也可能存在一些误会,使您无奈充分利用 Python 中 asyncio 的性能。

在本节中,咱们回顾了开发人员在思考应用 Asyncio 时看到的一些常见异议。

1. 全局解释器锁(GIL)怎么样?

GIL 爱护 Python 解释器的外部免受多线程的并发拜访和批改。异步事件循环在一个线程中运行。这意味着所有协程都在单个线程中运行。因而,在应用 asyncio 和协程时 GIL 不是问题。

2. Python 协程是“实在的”吗?

协同程序在软件中进行治理。协程在 Python 运行时的 asyncio 事件循环中运行和治理(切换)。它们不是底层操作系统提供的性能的软件示意,如线程和过程。从这个意义上说,Python 不反对“原生协程”,但我不确定古代操作系统中是否存在这样的货色。

3. Python 不是并发谬误吗?

错!

Python 通过协程、线程和过程提供一流的并发性。它曾经存在了很长时间,并宽泛用于开源和商业我的项目中。

4. Python 不是并发的坏抉择吗?

开发人员喜爱 Python 的起因有很多,最常见的起因是它易于应用且开发速度快。Python 通常用于胶水代码、一次性脚本,但越来越多地用于大型软件系统。如果您应用的是 Python,而后须要并发,那么您能够应用所领有的货色。问题是毫无意义的。

如果您须要并发性并且您没有抉择一种语言,那么另一种语言可能更适合,也可能不适合。思考我的项目的性能和非性能需要(或用户需要、欲望和冀望)的全副范畴以及不同开发平台的性能。

5. 为什么不应用线程呢?

您能够应用线程而不是异步。任何应用线程开发的程序都能够重写为应用 asyncio 和协程。任何应用协程和 asyncio 开发的程序都能够重写为应用线程。在我的项目中采纳 asyncio 是一种抉择。

在大多数状况下,它们在性能上是等效的。许多用例将应用线程执行得更快,并且可能为更宽泛的 Python 开发人员所相熟。

网络编程和执行系统命令畛域的一些用例在应用 asyncio 时可能更简略(代码更少),并且比应用线程更具可扩展性。

本文由 mdnice 多平台公布

正文完
 0