Repolode
piscinajs

piscinajs/piscina

Un pool de threads Worker para Node.js que ejecuta tareas con uso intensivo de CPU fuera del event loop principal, con colas, cancelación y estadísticas de ejecución.

Estrellas
5,226
Forks
177
Issues abiertos
7
Último commit
hace 6 días

¿Qué es?

Piscina es un pool de threads Worker para Node.js. Permite que una aplicación envíe funciones síncronas o asíncronas a un conjunto de threads Worker, para que el trabajo limitado por CPU se ejecute en paralelo sin bloquear el event loop principal. Cada worker carga un handler exportado desde un archivo independiente y el pool devuelve el resultado como una Promise.

El pool se encarga de los detalles operativos: administra el número mínimo y máximo de threads, los tiempos de espera de inactividad y una cola de tareas configurable, con un límite de tamaño opcional y eventos de backpressure. Las tareas se pueden cancelar con un AbortSignal y el pool registra estadísticas de tiempo de ejecución y de espera. Se pueden configurar límites de memoria, variables de entorno y prioridades nice de CPU en Linux para los workers.

Piscina es compatible con CommonJS, ESM y TypeScript, y requiere Node.js 24 o posterior.

Funciones clave

  • 01Envía funciones handler síncronas o asíncronas a un pool de threads Worker.
  • 02Permite configurar el número mínimo y máximo de threads y los tiempos de espera de inactividad.
  • 03Permite cancelar tareas mediante AbortSignal o cualquier EventEmitter que emita 'abort'.
  • 04Ofrece un límite de tamaño opcional para la cola, con eventos drain para gestionar el backpressure.
  • 05Proporciona estadísticas de tiempo de ejecución y de espera, además de métricas de utilización.
  • 06Permite establecer límites de memoria por worker y, opcionalmente, la prioridad nice de CPU en Linux.

Casos de uso

  • Delegar tareas con uso intensivo de CPU, como hashing, procesamiento de imágenes o análisis, desde un servidor web de Node.js.
  • Limitar la concurrencia de trabajos costosos y poner en cola las solicitudes excedentes con backpressure.
  • Ejecutar renderizado del lado del servidor u otros cálculos síncronos sin bloquear el event loop.

Inicio rápido

  1. 1

    Crea main.js y worker.js como se indica en la sección Example del README

  2. 2

    Ejecuta main.js con Node.js para mostrar el resultado

Antes de usarlo

  • El README requiere Node.js 24.x o una versión posterior.
  • Los metadatos del repositorio no muestran una licencia clara, aunque el README indica MIT.

Temas

Preguntas frecuentes

¿Qué es piscina?
Un pool de threads Worker para Node.js que ejecuta tareas con uso intensivo de CPU fuera del event loop principal, con colas, cancelación y estadísticas de ejecución. Piscina es un pool de threads Worker para Node.js. Permite que una aplicación envíe funciones síncronas o asíncronas a un conjunto de threads Worker, para que el trabajo limitado por CPU se ejecute en paralelo sin bloquear el event loop principal. Cada worker carga un handler exportado desde un archivo independiente y el pool devuelve el resultado como una Promise.
¿piscina es gratuito? ¿Qué licencia tiene?
piscina es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿piscina sigue mantenido?
Mantenimiento activo. El último commit de piscina fue el 19 oct 2026.
¿Para qué puedo usar piscina?
Delegar tareas con uso intensivo de CPU, como hashing, procesamiento de imágenes o análisis, desde un servidor web de Node.js. Limitar la concurrencia de trabajos costosos y poner en cola las solicitudes excedentes con backpressure. Ejecutar renderizado del lado del servidor u otros cálculos síncronos sin bloquear el event loop.
¿Cómo se instala piscina?
Crea main.js y worker.js como se indica en la sección Example del README Ejecuta main.js con Node.js para mostrar el resultado
¿Dónde consigo piscina?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/piscinajs/piscina

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados