worker-man
v1.0.2
Published
A better & simple API to consume worker thread in node.js
Downloads
8
Maintainers
Readme
👷♂️ Worker Man
worker-man
is a lightweight and easy-to-use package for distributing CPU-intensive operations in Node.js.
This package let's you convert a CPU heavy functions into an async functions, which will run in a worker thread on invocation, it's that simple
Installation
# If you use npm:
npm install worker-man
# Or if you use Yarn:
yarn add worker-man
Online Playground
Use the button below to play with a small demo project to help familiarize with Worker Man.
Usage
Here's a basic example of how to use worker-man
.
- Create a new file and define your CPU intensive function in it.
- Call
createWorker
with the__filename
as first argument and the function you have defined as the second argument.
fibonacci-worker.js
import { createWorker } from 'worker-man';
// A CPU intensive fibonacci implementation
export function cpuHeavyFindFibonacci(n){
if (n < 2) return 1;
else return cpuHeavyFindFibonacci(n - 2) + cpuHeavyFindFibonacci(n - 1);
}
export const findFibonacci = createWorker(__filename, cpuHeavyFindFibonacci);
- Save the return value of
createWorker
, which will be anasync
function that you can use anywhere in your codebase.
main.js
import { findFibonacci } from './fibonacci-worker.ts'
const main = async () => {
const fibonacci = await findFibonacci(200); // Here `findFibonacci` will be run in a worker thread
console.log(fibonacci);
}
In the above example findFibonacci
will be run in a worker thread
API
createWorker(filename, workerFunction)
Returns a function that can be used to execute the workerFunction in a separate thread.
Arguments
- filename (string): The absolute path of the file that creates the worker.
- workerFunction (function): The function to be executed in the worker thread.
Return value
A function that returns a Promise which resolves to the result of workerFunction.
Author
License
Worker Man is MIT licensed.