Repolode
piscinajs

piscinajs/piscina

Node.js 工作线程池,把计算密集型任务转移到子线程执行,避免阻塞主事件循环。

Star
5,226
Fork
177
未关闭 Issue
7
最近提交
6天前

这是什么?

Piscina 是一个用于 Node.js 的工作线程池。应用可以把同步或异步函数分派到一组 Worker 线程中执行,让计算密集型任务并行运行,而不阻塞主事件循环。每个 Worker 从独立文件中加载导出的处理函数,线程池以 Promise 的形式返回结果。

线程池负责常见的运行管理:可设置最小和最大线程数、空闲超时,并支持可配置的任务队列,包括队列长度上限和背压事件。任务可以通过 AbortSignal 取消,线程池还会记录任务的运行时间和等待时间统计。Worker 可以设置内存上限、环境变量,在 Linux 上还能调整 CPU 调度优先级。

Piscina 同时支持 CommonJS、ESM 和 TypeScript,要求 Node.js 24 及以上版本。

核心功能

  • 01将同步或异步处理函数分派到 Worker 线程池中执行。
  • 02可配置最小和最大线程数以及空闲超时时间。
  • 03支持通过 AbortSignal 或发出 'abort' 事件的 EventEmitter 取消任务。
  • 04可设置队列长度上限,并通过 drain 事件实现背压控制。
  • 05提供任务运行时间、等待时间统计及线程利用率指标。
  • 06支持为 Worker 设置内存上限,并可在 Linux 上调整 CPU 优先级。

适用场景

  • 在 Node.js Web 服务中把哈希、图像处理或解析等计算密集任务转移到子线程。
  • 限制高开销任务的并发数,并通过背压机制控制超出的请求排队。
  • 在不阻塞事件循环的前提下执行服务端渲染或其他同步计算。

快速上手

  1. 1

    按照 README 的 Example 部分创建 main.js 和 worker.js

  2. 2

    用 Node.js 运行 main.js 打印结果

使用前须知

  • README 要求 Node.js 24.x 或更高版本。
  • 仓库元数据中的许可证不明确,但 README 标注为 MIT。

标签

常见问题

piscina 是什么?
Node.js 工作线程池,把计算密集型任务转移到子线程执行,避免阻塞主事件循环。 Piscina 是一个用于 Node.js 的工作线程池。应用可以把同步或异步函数分派到一组 Worker 线程中执行,让计算密集型任务并行运行,而不阻塞主事件循环。每个 Worker 从独立文件中加载导出的处理函数,线程池以 Promise 的形式返回结果。
piscina 可以免费使用吗?用的什么许可证?
piscina 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
piscina 还在维护吗?
活跃维护中。piscina 最近一次提交是在 2026年10月19日。
piscina 适合用来做什么?
在 Node.js Web 服务中把哈希、图像处理或解析等计算密集任务转移到子线程。 限制高开销任务的并发数,并通过背压机制控制超出的请求排队。 在不阻塞事件循环的前提下执行服务端渲染或其他同步计算。
piscina 怎么安装和运行?
按照 README 的 Example 部分创建 main.js 和 worker.js 用 Node.js 运行 main.js 打印结果
在哪里获取 piscina?
源代码和安装说明在 GitHub 上:https://github.com/piscinajs/piscina

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目