태스크 그래프를 활용한 태스크 병렬 C++ 프로그램 작성을 지원하며 CPU 멀티스레딩과 CUDA GPU를 지원하는 헤더 전용 라이브러리입니다.
piscinajs/piscina
메인 이벤트 루프를 막지 않고 CPU 집약적 작업을 실행하는 Node.js 워커 스레드 풀로, 큐와 취소 기능, 실행 통계를 제공합니다.
- 스타
- 5,226
- 포크
- 177
- 열린 이슈
- 7
- 마지막 커밋
- 5일 전
어떤 프로젝트인가요?
Piscina는 Node.js용 워커 스레드 풀입니다. 애플리케이션에서 동기 또는 비동기 함수를 여러 Worker 스레드에 전달해 CPU 바운드 작업을 병렬로 처리하므로 메인 이벤트 루프가 차단되지 않습니다. 각 워커는 별도 파일에서 내보낸 핸들러를 불러오며, 풀은 결과를 Promise로 반환합니다.
풀은 운영에 필요한 세부 사항도 처리합니다. 최소·최대 스레드 수와 유휴 시간 제한을 관리하며, 크기 제한과 백프레셔 이벤트를 선택적으로 설정할 수 있는 작업 큐를 제공합니다. AbortSignal로 작업을 취소할 수 있고, 풀은 실행 시간과 대기 시간 통계를 기록합니다. 워커별 메모리 제한, 환경 변수, Linux CPU nice 우선순위도 설정할 수 있습니다.
Piscina는 CommonJS, ESM, TypeScript를 지원하며 Node.js 24 이상이 필요합니다.
핵심 기능
- 01동기 또는 비동기 핸들러 함수를 Worker 스레드 풀에 전달합니다.
- 02최소·최대 스레드 수와 유휴 시간 제한을 설정할 수 있습니다.
- 03AbortSignal 또는 'abort'를 발생시키는 모든 EventEmitter로 작업을 취소할 수 있습니다.
- 04백프레셔를 위한 선택적 큐 크기 제한과 drain 이벤트를 제공합니다.
- 05실행 시간 및 대기 시간 통계와 사용률 지표를 제공합니다.
- 06워커별 메모리 제한과 선택적 Linux CPU nice 우선순위를 설정할 수 있습니다.
활용 사례
- Node.js 웹 서버에서 해싱, 이미지 처리, 파싱 같은 CPU 집약적 작업을 분리해 처리합니다.
- 비용이 큰 작업의 동시 실행 수를 제한하고, 초과 요청은 백프레셔를 적용해 큐에 넣습니다.
- 이벤트 루프를 멈추지 않고 서버 사이드 렌더링이나 기타 동기 계산을 실행합니다.
빠른 시작
- 1
README의 Example 섹션에 나온 대로 main.js와 worker.js를 만듭니다
- 2
Node.js로 main.js를 실행해 결과를 출력합니다
사용 전 알아둘 점
- README에 따르면 Node.js 24.x 이상이 필요합니다.
- 저장소 메타데이터에는 명확한 라이선스가 표시되어 있지 않지만, README에는 MIT라고 적혀 있습니다.
토픽
자주 묻는 질문
- piscina은(는) 무엇인가요?
- 메인 이벤트 루프를 막지 않고 CPU 집약적 작업을 실행하는 Node.js 워커 스레드 풀로, 큐와 취소 기능, 실행 통계를 제공합니다. Piscina는 Node.js용 워커 스레드 풀입니다. 애플리케이션에서 동기 또는 비동기 함수를 여러 Worker 스레드에 전달해 CPU 바운드 작업을 병렬로 처리하므로 메인 이벤트 루프가 차단되지 않습니다. 각 워커는 별도 파일에서 내보낸 핸들러를 불러오며, 풀은 결과를 Promise로 반환합니다.
- piscina은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- piscina은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- piscina은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. piscina의 마지막 커밋은 2026년 10월 19일입니다.
- piscina은(는) 어디에 사용할 수 있나요?
- Node.js 웹 서버에서 해싱, 이미지 처리, 파싱 같은 CPU 집약적 작업을 분리해 처리합니다. 비용이 큰 작업의 동시 실행 수를 제한하고, 초과 요청은 백프레셔를 적용해 큐에 넣습니다. 이벤트 루프를 멈추지 않고 서버 사이드 렌더링이나 기타 동기 계산을 실행합니다.
- piscina는 어떻게 설치하나요?
- README의 Example 섹션에 나온 대로 main.js와 worker.js를 만듭니다 Node.js로 main.js를 실행해 결과를 출력합니다
- piscina은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/piscinajs/piscina
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
wait group, 제한된 풀, 순서가 보장되는 스트림, 패닉 전파를 제공해 구조적 동시성을 더 안전하고 간편하게 구현하는 Go 라이브러리입니다.
futures, promises, 스레드 풀, agent, atom, 스레드 안전 컬렉션, 동기화 클래스를 비롯한 동시성 프리미티브를 제공하는 Ruby gem입니다.
순차 반복자를 거의 그대로 바꿔 병렬 처리할 수 있게 해 주는 Rust 데이터 병렬성 라이브러리입니다.
Watt는 컨테이너에서 CPU 활용도, 확장성, 관측성을 높이기 위해 모든 Node.js 앱을 워커 스레드에서 실행하는 Node.js 애플리케이션 서버입니다.
NumPy 배열 수식을 청크 단위로 계산해 메모리 사용량을 줄이고 여러 코어를 활용하는 고속 표현식 평가기입니다.