Header-only библиотека C++ для написания параллельных программ на основе графов задач с поддержкой многопоточности на CPU и вычислений на GPU через CUDA.
piscinajs/piscina
Пул потоков-воркеров для Node.js, который выносит ресурсоёмкие вычисления из основного цикла событий и поддерживает очереди, отмену задач и статистику выполнения.
- Звёзды
- 5,226
- Форки
- 177
- Открытые issues
- 7
- Последний коммит
- 6 дней назад
Что это?
Piscina — это пул потоков-воркеров для Node.js. Он позволяет приложению отправлять синхронные или асинхронные функции набору потоков Worker, чтобы ресурсоёмкие вычисления выполнялись параллельно и не блокировали основной цикл событий. Каждый воркер загружает экспортированный обработчик из отдельного файла, а результат возвращается в виде Promise.
Пул берёт на себя управление потоками: задаёт их минимальное и максимальное количество, тайм-ауты простоя и настраиваемую очередь задач с необязательным ограничением размера и событиями обратного давления. Задачи можно отменять с помощью AbortSignal, а пул собирает статистику времени выполнения и ожидания. Для воркеров можно задать лимиты памяти, переменные окружения и приоритеты Linux CPU nice.
Piscina поддерживает CommonJS, ESM и TypeScript и требует Node.js 24 или новее.
Ключевые возможности
- 01Отправляет синхронные или асинхронные функции-обработчики в пул потоков Worker.
- 02Позволяет настроить минимальное и максимальное количество потоков, а также тайм-ауты простоя.
- 03Отменяет задачи с помощью AbortSignal или любого EventEmitter, генерирующего событие 'abort'.
- 04Поддерживает необязательное ограничение размера очереди и события drain для управления обратным давлением.
- 05Собирает статистику времени выполнения и ожидания, а также метрики загрузки.
- 06Позволяет задавать лимиты памяти для каждого воркера и необязательный приоритет Linux CPU nice.
Сценарии использования
- Вынос ресурсоёмких задач, таких как хеширование, обработка изображений или парсинг, из веб-сервера на Node.js.
- Ограничение параллельного выполнения затратных задач с постановкой избыточных запросов в очередь и управлением обратным давлением.
- Запуск серверного рендеринга и других синхронных вычислений без блокировки цикла событий.
Быстрый старт
- 1
Создайте main.js и worker.js, как показано в разделе Example файла README
- 2
Запустите main.js с помощью Node.js, чтобы вывести результат
Что важно знать
- Для работы, согласно README, требуется Node.js версии 24.x или выше.
- В метаданных репозитория не указана понятная лицензия, хотя в README указана MIT.
Темы
Частые вопросы
- Что такое piscina?
- Пул потоков-воркеров для Node.js, который выносит ресурсоёмкие вычисления из основного цикла событий и поддерживает очереди, отмену задач и статистику выполнения. Piscina — это пул потоков-воркеров для Node.js. Он позволяет приложению отправлять синхронные или асинхронные функции набору потоков Worker, чтобы ресурсоёмкие вычисления выполнялись параллельно и не блокировали основной цикл событий. Каждый воркер загружает экспортированный обработчик из отдельного файла, а результат возвращается в виде Promise.
- piscina можно использовать бесплатно? Какая у него лицензия?
- piscina распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- piscina всё ещё поддерживается?
- Активно поддерживается. Последний коммит в piscina — 19 окт. 2026 г..
- Для чего можно использовать piscina?
- Вынос ресурсоёмких задач, таких как хеширование, обработка изображений или парсинг, из веб-сервера на Node.js. Ограничение параллельного выполнения затратных задач с постановкой избыточных запросов в очередь и управлением обратным давлением. Запуск серверного рендеринга и других синхронных вычислений без блокировки цикла событий.
- Как установить piscina?
- Создайте main.js и worker.js, как показано в разделе Example файла README Запустите main.js с помощью Node.js, чтобы вывести результат
- Где скачать piscina?
- Исходный код и инструкции по установке — на GitHub: https://github.com/piscinajs/piscina
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Библиотека Go, которая делает структурированную конкурентность безопаснее и проще: группы ожидания, ограниченные пулы, упорядоченные потоки и передача паник.
Ruby-гем с примитивами конкурентности: futures, promises, пулы потоков, агенты, атомы, потокобезопасные коллекции и средства синхронизации.
Библиотека для параллельной обработки данных в Rust: переводит последовательные итераторы в параллельные с минимальными изменениями API.
Watt — сервер приложений для Node.js, который запускает любые Node.js-приложения в потоках-воркерах, повышая эффективность использования CPU, масштабируемость и наблюдаемость в контейнерах.
Быстрый вычислитель выражений над массивами NumPy: обрабатывает выражения вроде 3*a+4*b частями, экономит память и использует несколько ядер.