Задать вопрос
Flakelf
@Flakelf

Как запустить функцию в несколько потоков в Node JS?

Как запустить функцию в несколько потоков?

Допустим, у меня есть функция, которая в в цикле делает десять GET-запросов на некоторый URL:

function makeReq(param1, param2) {
    for(i = 0, i < 10, i++) {
        // Do something
    }
}


Я хочу запустить её допустим в сто потоков с разными аргументами, чтобы сэмулировать тысячу запросов, потоки между собой не общаются, считай - это должен быть как отдельный процесс, который запускает родительский процесс. Знаю, что можно запускать child_process через какие-то библиотеки, но единственное ли это решение? И я знаю, что NODE.JS однопоточен.

К слову, насколько я проиграю в производительности, или же лучше написать простую консольку на Python с его threading?
  • Вопрос задан
  • 713 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@napa3um
https://nodejs.org/api/cluster.html
На ноде проиграть в производительности пифону очень сложно (в коде V8 всё заоптимизировано кровавой энтерпрайзной конкуренцией, пифон же выращивается в более спокойной атмосфере лабораторных исследований, когда не особо важно, выполнится скрипт за одну секунду или десять). В вашем случае вообще всё упрётся в IO, можете писать хоть на бэйсике, тормозить сам интерпретатор не будет, он будет постоянно ждать IO.

И на всякий случай спрошу - а зачем вам в несколько тредов слать запросы? Ведь они всё равно в TCP сериализуются и будут идти по порядку. Очень похоже на наивную попытку реализовать дидос :).
Ответ написан
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Очереди (rabbitmq, Kafka) + много воркеров
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы