gpt4 book ai didi

python - 了解异步IO : vs asynchronous programming

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:13 25 4
gpt4 key购买 nike

我很难理解异步IO,所以我希望澄清一些误解,因为“异步”这个词似乎被用了很多。如果重要的话,我的目标是进入扭曲的Python,但我想对基本概念有一个总体的了解。

到底什么是异步编程?是否使用支持异步IO的语言和操作系统进行编程?或者它是更普遍的东西?换句话说,异步IO是与异步编程不同的概念吗?

最佳答案

异步 ​​IO 意味着当您的计算机等待某些内容时,应用程序不会被阻塞。这里等待的定义不是处理。正在等待网络服务器?正在等待网络连接?等待硬盘驱动器响应盘片上的数据?所有这些都是 IO。

通常,您可以以非常简单的方式同步编写此内容:

let file = fs.readFileSync('file');
console.log(`got file ${file}`);

这将阻塞,并且在 readFileSync 返回您所要求的内容之前不会发生任何事情。或者,您可以异步执行此操作,这不会阻塞。这编译完全不同。在幕后它可能正在使用中断。它可能是使用 select 语句轮询句柄。它通常使用不同的绑定(bind)到低级库,例如 libc。这就是您需要知道的全部。那会把你的脚弄湿的。这对我们来说是这样的,

fs.readFile(
'file',
function (file) {console.log(`got file ${file}`)}
);

在此您提供一个“回调”。该函数将立即请求文件,当它(您调用的函数,这里是fs.readFile)取回文件时,它将调用您的回调(这里是一个接受单个参数文件的函数。

异步编写东西有困难:

  • 如果使用回调,则创建金字塔代码。
  • 错误可能更难查明。
  • 垃圾收集并不总是那么干净。
  • 性能开销和内存开销。
  • 如果与同步代码混合,可能会造成难以调试的情况。

所有这些都是异步编程的艺术..

关于python - 了解异步IO : vs asynchronous programming,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37536061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com