https://github.com/aromalanil/worker-man
A simple & better API to consume worker threads in node.js
https://github.com/aromalanil/worker-man
node-js node-library nodejs npm npm-package worker-threads
Last synced: 3 months ago
JSON representation
A simple & better API to consume worker threads in node.js
- Host: GitHub
- URL: https://github.com/aromalanil/worker-man
- Owner: aromalanil
- License: mit
- Created: 2023-02-19T07:23:45.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2023-02-21T12:35:09.000Z (about 3 years ago)
- Last Synced: 2025-09-21T11:58:12.880Z (7 months ago)
- Topics: node-js, node-library, nodejs, npm, npm-package, worker-threads
- Language: TypeScript
- Homepage: https://npmjs.com/worker-man
- Size: 37.1 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# 👷♂️ Worker Man
[](https://www.npmjs.com/package/worker-man)

[](https://github.com/aromalanil/worker-man/blob/master/LICENSE)
[](https://www.npmjs.com/package/worker-man)
[](https://www.npmjs.com/package/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
```bash
# 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.
[](https://codesandbox.io/p/sandbox/eloquent-gould-0szwss)
## Usage
Here's a basic example of how to use `worker-man`.
1. Create a new file and define your CPU intensive function in it.
2. Call `createWorker` with the `__filename` as first argument and the function you have defined as the second argument.
> fibonacci-worker.js
```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);
```
3. Save the return value of `createWorker`, which will be an `async` function that you can use anywhere in your codebase.
> main.js
```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
[Aromal Anil](https://aromalanil.in)
## License
Worker Man is [MIT licensed](https://github.com/aromalanil/worker-man/blob/master/LICENSE).