сборка фронтэнда на Vue. Используется multiprocessing, чтобы билд делался в двух отдельных процессах для увеличения скорости и сокращения времени.
По видимости из-за того, что оба процесса по билду пишут в родительский консоль, выгоды от multiprocessing нет.
Пробовал опцию --silent - https://docs.npmjs.com/cli/v9/using-npm/config#shorthands-and-other-cli-niceties, но не помогло.
Решил запустить новую консоль и в ней вызвать команду по билду. Но коммуникации с новой консолью не получается. То есть вызвать команду в новой консоли не получается. Родительская консоль при этом остается открытой.
Код, который пробовал:
p = subprocess.Popen(r"cmd", stdout=PIPE, stdin=PIPE, stderr=subprocess.STDOUT, creationflags=subprocess.CREATE_NEW_CONSOLE)
p.communicate("dir".encode())
Как создать консоль во время работы скрипта и в новой консоли вызвать нужную команду? (Windows)
А какая задача решается-то? Запустить npm в фоне?
> Используется multiprocessing, чтобы билд делался в двух отдельных процессах для увеличения скорости и сокращения времени. для того чтобы использование двух процессов сокращало время надо чтобы они делали разную работу. Как ты этого добиваешься?
Сбилдить 2 проекта с разными настройками. Но чтобы билд был по скорости билда одного проекта
А как узнать?
ну когда ты сборку запускаешь, Как выглядит нагрузка на процессор?
Ну, subprocess.Popen(["npm", "run", "build", ...], stdout=PIPE)
Визуально не определить. А как это поможет?
в смыле не определить?
ты не знаешь, npm сам умеет юзать больше одного ядра?
В изначальном сообщении этого не вижу, там только какие-то многоуровневые костыли непонятного назначения
В прямом. Не видно. График как график, ничего подозрительного. А как это поможет?
в графике сколько CPU занято при сборке одного проекта?
Не знаю. Но там два проекта же, видимо нужно просто два раза запустить npm
Ты тоже самое написал
просто если один юзает все ядра, запуск второго будет не так хорош
Нет, рекомендую перечитать моё сообщение
Я так и не понял зачем это. Что это даст? Но такого нет что 100% занято. От 50 до 80 гдето колеблется
ну из пайпа читать бы ещё
При чём тут стдаут? По времени работы бил двух занял как билд одного?
1. если у тебя скрипт занмиает весь процессор, второй будет ему мешать 2. если у тебя скорость скрипта упирается ввод/вывод (например дисковый), а процессор свободен, второй будет ему мешать
Ну вообще да, а то процесс заблокируется ещё на записи в стдаут
Без ст аут communicate выдает ошибку
1 не занимает. 2 не упирается
А ты чем это отслеживаешь?
1. 100% одного ядра или всех? 2. как не упирается, почему тогда 80%, а не 100%
Если "не упирается", то откуда вывод, что скрипты мешают друг другу стдаутами?
На мой изначальный вопрос ответь пожалуйста
Сначала ты на второй
Обсуждают сегодня