Skip to content

Pool de workers avec Piscina

L'utilisation d'une bibliothèque externe pour gérer un pool de workers peut grandement simplifier le code et l'architecture, tout en offrant des performances optimales. Une des bibliothèques populaires pour cela est piscina.

Piscina

Piscina est une bibliothèque qui simplifie la création et la gestion de pool de workers dans Node.js, en s'appuyant sur le module worker_threads.

Installation

Pour l'installer via npm :

bash
npm install piscina
npm install piscina

Exemple d'utilisation

  1. Création du code du worker

Sauvegardez ce fichier en tant que worker.js :

javascript
export default (data) => {
    return data + 1;
};
export default (data) => {
    return data + 1;
};
  1. Création du code principal utilisant Piscina
javascript
import Piscina from 'piscina';
import path from 'path';

const piscina = new Piscina({
    filename: path.resolve(__dirname, 'worker.js')
});

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

(async () => {
    for (let number of numbers) {
        const result = await piscina.runTask(number);
        console.log(result);
    }
})();
import Piscina from 'piscina';
import path from 'path';

const piscina = new Piscina({
    filename: path.resolve(__dirname, 'worker.js')
});

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

(async () => {
    for (let number of numbers) {
        const result = await piscina.runTask(number);
        console.log(result);
    }
})();

Avec ces simples étapes, Piscina gérera automatiquement la création et la réutilisation des workers pour exécuter les tâches. La configuration par défaut créera autant de threads que le nombre de coeurs CPU disponibles, mais vous pouvez configurer cela et d'autres options comme vous le souhaitez.