一个仅含头文件的 C++ 库,用任务图编写任务并行程序,支持多线程与 CUDA GPU。
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
按照 README 的 Example 部分创建 main.js 和 worker.js
- 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 数据每日更新。
相关项目
1.2万1417C++Other更新于 10天前
一个让 Go 结构化并发更安全、更易读的库,提供带 panic 处理的 WaitGroup、限流协程池和有序流处理。
1万366GoMIT更新于 2个月前
Ruby 并发工具库,提供 Future/Promise、线程池、Agent、Atom、线程安全集合等并发原语。
5836423RubyOther更新于 8天前
Rust 数据并行库,只需修改少量代码即可把顺序迭代器改为并行执行。
1.3万618RustApache-2.0更新于 2个月前
Watt 是一个 Node.js 应用服务器,以 worker 线程运行任意框架的应用,提升多核利用率与可观测性。
2131210JavaScriptApache-2.0更新于 3小时前
面向 NumPy 的快速数组表达式求值库,分块并行计算,减少内存占用。
2545233PythonMIT更新于 5天前