node.js - 在 Node.js 中的多线程中处理文件
问题描述
我需要从在线 url 读取文件并在多线程中处理它并将其写入另一个输出。 https://www.w3.org/TR/PNG/iso_8859-1.txt 我试过的解决方案:如果集群是master,我会根据cpu计数分叉新线程。在for循环之外读取文件。我必须确保每个线程都有特定的行以在输出文件中打印,因为不应重复同一行。
我不确定这是否是正确的方法。请分享您的答案或建议。
解决方案
您能否详细说明为什么您认为应该在不同的线程中处理某些内容?
请在此处查看我关于类似问题的详细回复:如何在节点中真正实现耗时的异步请求
总结一下:
- Node.JS 仅在一个线程(主线程)中执行您的 javascript 代码
fs
,http
等内置模块net
利用libuv
工作线程在后台线程中处理 I/O- 第三方模块可能会做同样的事情,这取决于它们的实现
- 如果您希望您的代码在后台线程中执行,您有 2 个选项:
- 编写一个 C-wrapper 模块,它使用
libuv
工作线程来做这些事情 WorkerThreads
在 Node.JS 10 ( Docs ) 中引入的 JavaScript 代码中使用,但请注意此模块的状态是实验性的,尚未准备好投入生产
- 编写一个 C-wrapper 模块,它使用
一般来说,我非常怀疑你想自己使用线程。您的问题表明您想从网络服务器下载文件。可用的模块(fs
, request
, http
, ...)已经使用后台线程来执行 I/O,所以我不清楚除此之外您还需要在哪里进行后台处理。
请澄清更多,或者考虑坚持使用可用的模块,以防您不需要“更多的多线程”。
推荐阅读
- c# - PUT 请求不会将 Snake 大小写转换为 Pascal 大小写
- webpack - 文件加载器不复制 webp 图像
- javascript - React Native App 仅通过浏览器运行
- php - Laravel Livewire Same Component Two Items Sync in One Page
- mongodb - 日期到字符串 MongoDB
- kotlin - Kotlin 文档中未解决的@sample
- html - 将 div 的高度设置为另一个 div 高度
- android - 如何在 MVVM 中进行新的网络调用?
- ios - 当我按下按钮时 UIView 到图像
- python - Python DataFrame:如何用一个特定位置的值替换 Nan