- Notifications
You must be signed in to change notification settings - Fork47
A tiny wrapper for turning Node.js worker threads into easy-to-use routines for heavy CPU loads.
License
wilk/microjob
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A tiny wrapper for turningNode.js threads in easy-to-use routines for CPU-bound.
Microjob is a tiny wrapper for Node.js threads and is intended to perform heavy CPU loads using anonymous functions.
So, Microjob treats Node.js threads as temporary working units: if you need to spawn a long-living thread, then you should use thedefault API.
From version v0.1.0 microjob uses aWorker Pool 🎉
Microjob follows the same line of the original Node.js documentation: use it only for CPU-bound jobs and not for I/O-bound purposes.Quoting the documentation:
Workers are useful for performing CPU-intensive JavaScript operations; do not use them for I/O, since Node.js’s built-in mechanisms for performing operations asynchronously already treat it more efficiently than Worker threads can.
Microjob can be used withNode.js 12+ without flag. WithNode.js 10.5+ you need the--experimental-worker flag activated, otherwise it won't work.
More details explained in:Microjob: a tiny multithreading library for Node.js
Vianpm:
$ npm install --save microjob
(async()=>{const{ job, start, stop}=require("microjob");try{// start the worker poolawaitstart();// this function will be executed in another threadconstres=awaitjob(()=>{leti=0;for(i=0;i<1000000;i++){// heavy CPU load ...}returni;});console.log(res);// 1000000}catch(err){console.error(err);}finally{// shutdown worker poolawaitstop();}})();
- 🛢️ Worker Pool
- 🏥 auto self-healing
- 🙌 easy and simple
- 🕔 supports both sync and async jobs
- 🛡️ huge test coverage
- 📜 well documented
Dive deep into the documentation to find more examples:Guide
About
A tiny wrapper for turning Node.js worker threads into easy-to-use routines for heavy CPU loads.