Node.js中的多线程处理文件

时间:2019-02-21 07:45:08

标签: node.js

我需要从在线url中读取文件,并在多线程中对其进行处理,然后将其写入另一个输出中。 https://www.w3.org/TR/PNG/iso_8859-1.txt 我尝试的解决方案: 如果集群是主集群 我基于cpu计数.for分叉了新线程,并在for循环外读取了该文件。 我必须确保每个线程都有一定的行可以在输出文件中打印,因为同一行不应重复。

我不确定这是否是正确的方法。 请分享您的答案或建议。

1 个答案:

答案 0 :(得分:0)

您能否解释为什么您认为应该在其他线程中处理某些东西?

请在此处查看有关类似问题的详细回复:How to truly make a time consuming request async in node

总结:

  • Node.JS仅在一个线程(主线程)中执行您的javascript代码
  • fshttpnet等内置模块利用libuv工作线程在后台线程中处理I / O
  • 第三方模块可能相同,这取决于它们的实现
  • 如果您希望在后台线程中执行您的代码,则有两种选择:
    • 编写一个使用libuv工作线程执行操作的C-wrapper模块
    • 在Node.JS 10(Docs)中引入的JavaScript代码中使用WorkerThreads,但请注意,此模块的状态为实验性,尚未准备就绪用于生产

一般来说,我高度怀疑想要自行使用线程。您的问题表明您要从Web服务器下载文件。可用的模块(fsrequesthttp,...)已经使用后台线程来进行I / O,因此目前尚不清楚对我来说,最重要的是您需要进行后台处理。

请进一步说明,或者考虑坚持使用可用的模块,以防您不需要“更多的多线程”。