Skip to content

Pool de workers avec Workerpool

La bibliothèque workerpool est une autre option populaire pour gérer un pool de workers dans Node.js. Elle offre une API simple et flexible pour la création et la gestion de workers, et supporte aussi bien le navigateur que Node.js.

Voici comment vous pouvez utiliser workerpool pour le même exemple de tâche d'incrément :

Installation

Pour installer workerpool via npm :

bash
npm install workerpool
npm install workerpool

Exemple d'utilisation

  1. Création du code du worker

Sauvegardez ce fichier en tant que worker.js :

javascript
function increment(data) {
    return data + 1;
}

// Exportation de la fonction pour l'utiliser avec workerpool
export default {
    increment
};
function increment(data) {
    return data + 1;
}

// Exportation de la fonction pour l'utiliser avec workerpool
export default {
    increment
};
  1. Création du code principal utilisant workerpool
javascript
import workerpool from 'workerpool';

const pool = workerpool.pool(__dirname + '/worker.js');

const numbers = [...Array(1000).keys()];

(async () => {
    const promises = numbers.map(number => pool.exec('increment', [number]));

    const results = await Promise.all(promises);
    results.forEach(result => console.log(result));

    pool.terminate(); // N'oubliez pas de fermer le pool une fois que vous avez terminé
})();
import workerpool from 'workerpool';

const pool = workerpool.pool(__dirname + '/worker.js');

const numbers = [...Array(1000).keys()];

(async () => {
    const promises = numbers.map(number => pool.exec('increment', [number]));

    const results = await Promise.all(promises);
    results.forEach(result => console.log(result));

    pool.terminate(); // N'oubliez pas de fermer le pool une fois que vous avez terminé
})();

La méthode pool.exec exécute une fonction exportée du module de worker. Elle renvoie une promesse, vous permettant de gérer facilement la concurrence avec Promise.all ou d'autres mécanismes de promesses.

workerpool gère automatiquement le scaling du pool en fonction du nombre de cœurs CPU disponibles, mais vous pouvez aussi le configurer manuellement.