multithreading - NodeJS 批处理多处理 - 池中的子进程(或多线程)

标签 multithreading node.js child-process fork

NodeJS 批处理多线程处理 - 池中的子进程。

我知道子进程是进程,不是线程。我使用了错误的语义,因为当您谈到“多线程”时,大多数人都知道您的意图。所以我会把它保留在标题中。


想象这样一种场景,您使用单个自定义函数或模块连续处理多个相似且复杂的事情。使用所有可用的核心/线程(例如 8/16)很有意义,这就是 child_process.fork()是为了。

理想情况下,您将需要多个同步工作人员并向一个 Controller 发送消息/从一个 Controller 发送/回调消息。

node-cpool , fork-pool , child-pool有一些模块正是这样做的,但它们看起来陈旧/无人维护/不受欢迎。

有大量类似的模块,但这些模块似乎最相关。它们的共同点是一些提交,几乎没有加星标,几乎没有 fork ,也没有被放弃。

通常情况下,当我无法为一项看起来在各个方面都有意义的任务找到一些东西时,通常的情况是我缺少一种更好的方法。因此我的问题。

我如何拥有一个托管的、排队的、多线程并行池 fork()用于执行一些 CPU 密集型工作的自定义模块?

多线程模块,如 TAGGwebworker-threads不一样,因为它们不支持完整模块(带有二进制编译组件)。


附言

我现在正在使用 fork-pool这似乎完全符合我的要求,但有一些怪癖,但我无法相信这样一个未知且不受欢迎的模块会是这里唯一可行的选择。

最佳答案

我建议使用类似 Redis 的东西作为你的队列。 Here's a tutorial使用 Redis 和 Kue 在 Node 中创建消息总线。这将很好地扩展,并允许您有多个进程、线程,甚至机器在队列中生产和消费项目。

关于multithreading - NodeJS 批处理多处理 - 池中的子进程(或多线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25911760/

相关文章:

python - Python中线程间的通信(不使用全局变量)

node.js - 在 dynamodb Local 中查询全局二级索引

python - 在后台调用Python函数

javascript - 如果我不想等待 2 个方法而是等待两个方法都完成怎么办

node.js - 如何在nodejs中同步发送for循环请求?

node.js - Node child_process 与 Heroku 工作线程

mysql - 从 Electron.io 应用程序进行 MySql 备份的更好方法

c - 如何为 n 个子进程实现 n 个管道

WPF 多线程

iphone - 在新线程上设置本地通知?