gpt4 book ai didi

javascript - 使时间密集型函数异步

转载 作者:行者123 更新时间:2023-11-30 14:33:20 28 4
gpt4 key购买 nike

使时间密集型功能(例如图像处理)异步运行以允许其他代码运行或允许所述功能的多个实例并行运行的最佳方法是什么? (可以是特定于 Node 的)例如 fs.readFile() 或 fetch() (XHR)。

最佳答案

因为 node.js 以单线程方式运行你的 Javascript(一次只执行一段 Javascript),如果你的计算密集型图像处理目前全是 Javascript 代码,那么你可以选择与其他并行运行图像处理Javascript 如下:

  1. 启动一个或多个工作进程(可以运行 node.js 代码或您想要的任何其他程序)并在一个单独的进程中进行图像处理。然后,他们可以通过任何形式的进程间通信来传回结果。这可能是解决 node.js 中 CPU 密集型问题的最常见方法(将 CPU 密集型的东西卸载到其他进程)。您可以使用 child_process 模块来启动这些其他进程并与它们通信。

  2. 为 node.js 编写一个本地代码插件,它使用本地线程和本地代码来进行图像处理,并为 node.js 代码提供一个异步接口(interface)。然后,您可以从 node.js 异步调用该接口(interface)并在它完成时收到通知,但 node.js 可以在它工作的同时自由地处理其他事情。

  3. 将图像处理分成非常小的工作 block ,这样您就可以执行一小块工作(例如几毫秒的工作),安排下一个工作 block 运行几毫秒并将控制权返回给事件子系统,以便它可以处理与您的小块工作交错的其他事件。仅供引用,设计复杂的代码以小块运行是很困难的。您最终不得不构建一个状态机,该状态机可以执行少量工作并返回,稍后才被调用以执行更多工作。

关于javascript - 使时间密集型函数异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50824310/

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