Меня беспокоит окружение, если оно заблокирует событие l oop.
Нет. Запуск нового дочернего процесса с любым из методов child_process, которые НЕ заканчиваются на Sync
, не блокирует ваше событие l oop. Моментально время выполнения команды ОС запускает новый процесс, а затем он возвращается, и вы возвращаетесь к своему собственному событию l oop, независимо от того, что делает дочерний процесс.
Таким образом, если бы я вызвал внутренний скрипт, он заблокировал бы событие l oop на весь срок жизни скрипта или он активировал бы в своем собственном потоке?
«Дочерний процесс» - это новый "обработать". Это не нить в вашем процессе. Это совершенно новый процесс.
Я ясно прочитал из документации, что этот процесс порождает новый процесс, но разделяет ли этот новый процесс тот же поток, что и приложение Nodejs, или он получает собственный поток?
Каждый процесс имеет свой собственный основной поток. Итак, новый дочерний процесс, который вы запускаете, имеет собственный отдельный поток в своем собственном процессе, полностью независимый от родительского.
Я бы буквально увидел процесс "script.py", если бы проверил свои запущенные процессы ?
Да, вы бы. Это будет python процесс, выполняющийся script.py
.
Если это вопрос, специфичный для ОС c, пожалуйста, дайте ответ с таким предположением.
Ответ одинаков для всех операционных систем.
Теперь, если вы использовали один из Sync
методов, таких как child_process.spawnSync()
, он все равно запускает дочерний процесс в своем собственном процессе (который имеет это собственный основной поток), но, выбрав Sync
версию метода, вы явно попросили ваш node.js процесс заблокировать событие l oop до завершения дочернего процесса (по существу, чтобы дождаться его, прежде чем он сделает что-нибудь еще). Это поведение только для spawnSync()
, execFileSync()
и execSync()
.