问题标签 [node-worker-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
26 浏览

node.js - Handling large amounts of arbitrarily scheduled tasks in node

Premise: I have a calendar-like system that allows the creation/deletion of 'events' at a scheduled time in the future. The end goal is to perform an action (send message/reminder) prior to & at the start of the event. I've done a bit of searching & have narrowed down to what seems to be my two most viable choices

  • Unix Cron Jobs
  • Bree

I'm not quite sure which will best suit my end goal though, and additionally, it feels like there must be some additional established ways to do things like this that I just don't have proper knowledge of, or that I'm entirely skipping over.

My questions:

  • If, theoretically, the system were to be handling an arbitrarily large amount of 'events', all for arbitrary times in the future, which of these options is more practical system-resource-wise? Is my concern in this regard even valid?

  • Is there any foreseeable problem with filling up a crontab with a large volume of jobs - or, in bree's case, scheduling a large amount of jobs?

  • Is there a better idea I've just completely missed so far?

This mainly stems from bree's use of node 'worker threads'. I'm very unfamiliar with this concept and concerned that since a 'worker thread' is spawned per every job, I could very quickly tie up all of my available threads and grind... something, to a halt. This, however, sounds somewhat silly & possibly wrong(possibly indicative of my complete lack of knowledge here), & thus, my question.

Thanks, Stark.

0 投票
0 回答
65 浏览

javascript - 节点worker_thread如何将数组拆分为块并将每个发送给不同的worker

我一直在阅读有关worker_threadsNode.js 的内容。我的任务很简单:我有一组 URL,我想访问并从每个 URL 中抓取内容。为了并行执行此操作,我想使用工作线程,每个工作线程将负责抓取 URL 数组的子集。我无法将数组的不同部分传递给不同的工作人员,以便他们每个人都在不同的 URL 子集上工作。

任何帮助是极大的赞赏。

0 投票
1 回答
92 浏览

node.js - 在 IBM iSeries 上使用 node express,我们应该使用工作线程还是集群?

我已经了解了 node express 和 clusters,并且能够在 Windows 操作系统上成功实现它。Windows 上 cpu 内核的概念很容易掌握,因为我了解 os. 我们还计划在 iSeries 上测试 Web 服务,这将获得大量并发量。当我搜索有关在 iSeries 上的集群中运行 nodejs 的信息时,我会看到这篇文章,它指的是“工作线程”。

https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/blog-entry1/2020/04/02/optimizing-your-workload-using-worker-threads-in-ibm-sdk- for-nodejs-zos-v12

这让我想到“在 IBM iSeries 上使用 node express,我们应该使用工作线程还是集群?”

0 投票
0 回答
437 浏览

node.js - Node v12 无法解析 worker_threads

我正在使用 nodejs v12.18.3 和 npm v6.14.6 来制作一个反应项目。我正在尝试导入 worker_threads 模块,但它无法解析模块名称(即使 vs code 可以找到定义)。我已经确认该文件存在于 node_modules/@types/node/worker_threads.d.ts。我的包将“@types/node”:“^14.14.41”列为依赖项。为什么找不到 worker_threads 模块?

这是我尝试过的一些导入语句

0 投票
0 回答
226 浏览

node.js - 工作线程未在 Node.js 中运行

我正在尝试使用限制为 10 个线程的工作线程来实现基本的矩阵乘法。但是不是工作线程的线程根本没有响应。矩阵 A 和 B 填充有随机数生成器。

既不会触发“在线”事件,也不会运行此 console.log

0 投票
1 回答
91 浏览

javascript - 使用 csv-parse 和 node 在读取和解析文件中添加快速随机访问

我正在使用csv-parser库来处理节点中的 csv 解析。该文件可能很大,从 50,000 到 500,000 行不等,甚至可能更大。我必须在 csv 上执行一些计算,在将其提交到服务器之后,我正在考虑将 csv 分成块,然后我可以将这些块提供给工作线程以执行计算。工作线程将获取要跳过的行数,然后在达到特定限制之后开始读取行数。我创建了一个读取流,并通过选择要跳过的行数来传递 csv-parser。我试图对其进行一些基准测试,但在跳线和不跳线之间没有发现明显的好处。即使我阅读了整个文件,有时也比阅读结尾的 30,000 行要快。

我的猜测是,这个问题是因为读取流会一一读取数据,因此对于快速随机访问文件并不完美。

也许我的基准测试是错误的?

这是一段代码

这是输出

对于我的目标,还有其他更好的方法吗?

0 投票
2 回答
170 浏览

javascript - 优化用 TypeScript 编写的文件内容解析器类

我有一个打字稿模块(由 VSCode 扩展使用),它接受一个目录并解析文件中包含的内容。对于包含大量文件的目录,此解析需要一些时间,因此需要一些关于如何优化它的建议。

我不想复制/粘贴整个类文件,因此将使用包含我认为相关部分的模拟伪代码。

仍然是 TypeScript/NodeJS 的初学者。如果可能的话,我正在这里寻找多线程/Java 风格的解决方案。在 Java 的上下文中,this.heavyFileProcessingMethod将是Callableobject 的实例,并且该对象将被推入 a List<Callable>,然后由ExecutorService返回的List<Future<Object>>.

基本上我希望所有文件都被并行处理,但函数必须等待所有文件在从方法返回之前被处理(所以整个iterate方法只需要解析最大文件所花费的时间)。

一直在阅读NodeJS 中工作线程中的运行任务,这样的东西也可以在 TypeScript 中使用吗?如果可以,可以在这种情况下使用吗?如果我的Parser课程需要重构以适应此更改(或任何其他建议的更改),那没问题。

编辑:使用Promise.all

0 投票
0 回答
34 浏览

node.js - 使用 node-rdkafka 在工作线程中生成消息

我对 Node 和 Kafka 开发还很陌生。我正在构建一个需要向 kafka 生成消息的服务,同时还要使用来自另一个主题的消息。对于消费,我使用的是消费者流 API。

不过,为了生成消息,我试图弄清楚基本上有一个后台线程来监视一个列表,该列表中填充了需要发送的消息。该列表将根据使用的数据填充数据。

查看用于生产的标准 API,我发现我需要监听“就绪”事件。但是,在准备好的事件之后,我应该启动/启动什么后台进程?我想要一个进程/线程来轮询需要发送的消息队列/列表,并发送它们,并不断检查是否还有更多消息要发送。

工作线程在这里合适吗?

0 投票
1 回答
128 浏览

node.js - 如何在同时运行的笑话测试中生成从 postgres sql 获取的唯一编号

我对我的一个领域有唯一约束的问题。我正在向数据库添加记录,以便能够通过测试检查我的代码是否按预期工作。表字段之一是从外部提供的唯一编号(它与同一数据库中的其他表无关),我需要为每个测试生成这个唯一编号,但我遇到了唯一约束问题。我有以下功能:

返回第一个最小的免费“userId”字段。我还有以下测试:

第二个:

有时我会收到一个错误:

我听说每个测试套装(描述块)都在单独的工作线程上工作,我试图准备某种单例类,这可以帮助我,但我认为每个类的实例都是在单独的工作线程中创建的,所以生成userId不是唯一的。

这是我在单例类中尝试的:

但我意识到它对多线程没有帮助。我用过这个,但结果相同:

因此,问题是如何为每个测试生成唯一编号。当我将 --runInBand 选项传递给jest一切正常工作时,但这需要更多时间。

0 投票
1 回答
583 浏览

javascript - 在异步函数内部生成 NodeJS 工作线程不遵守承诺解决方案

我有一个异步函数,可以像这样启动 NodeJS 工作线程:

serivce-encode.js文件中,我有以下使用异步函数的代码。请注意,我postMessage用来表示它已完成。

然后,我使用下面的示例代码,但'message'上面事件中的代码会立即触发。也就是说,它似乎没有等到它完成:

encode函数工作正常,但该console.log语句在调用 encode() 函数时立即执行 - encode_datavar 也是undefined. 既然returnencode中的语句是在message事件中,那async函数的promise不应该在那个时候解决吗?