scheduler.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. const { createWorker, createScheduler } = require('../../');
  2. const path = require('path');
  3. const [,, imagePath] = process.argv;
  4. // Note: This example recognizes the same image 4 times in parallel
  5. // to show how schedulers can be used to speed up bulk jobs.
  6. // In actual use you would (obviously) not want to run multiple identical jobs.
  7. const image = path.resolve(__dirname, (imagePath || '../../tests/assets/images/cosmic.png'));
  8. const imageArr = [image, image, image, image];
  9. const scheduler = createScheduler();
  10. // Creates worker and adds to scheduler
  11. const workerGen = async () => {
  12. const worker = await createWorker("eng", 1, {cachePath: "."});
  13. scheduler.addWorker(worker);
  14. }
  15. const workerN = 4;
  16. (async () => {
  17. const resArr = Array(workerN);
  18. for (let i=0; i<workerN; i++) {
  19. resArr[i] = workerGen();
  20. }
  21. await Promise.all(resArr);
  22. const resArr2 = Array(imageArr.length);
  23. for (let i = 0; i < imageArr.length; i++) {
  24. resArr2[i] = scheduler.addJob('recognize', image).then((x) => console.log(x.data.text));
  25. }
  26. await Promise.all(resArr2);
  27. await scheduler.terminate(); // It also terminates all workers.
  28. })();