#python #terminal #multiprocessing #python-multiprocessing #gnome-terminal
Вопрос:
Я работаю с многопроцессорной обработкой и хочу спросить, есть ли возможность создать новый процесс с новым окном терминала в Ubuntu, у меня одновременно запускаются 3 процесса, но я хочу, чтобы результаты от них были в отдельных терминалах для каждого Спасибо
Комментарии:
1. Пожалуйста, предоставьте более подробную информацию, желательно включая часть кода, который вы используете для запуска процессов.
Ответ №1:
Нет. К сожалению, в python нет* способа сделать то, что вы хотите, так как python не контролирует терминал, в котором он работает.
Я думаю, что вы хотите отделить сообщения от ваших различных процессов, чтобы вы могли видеть, что происходит. Что я иногда делаю для этого (только при тестировании!), так это записываю каждый журнал процессов в отдельный файл, а затем просматриваю эти три файла в трех окнах терминала. Вы можете сделать это с watch
помощью или даже простого while
цикла в bash:
watch -n 3 "cat /my/output/file" # or:
while true; do cat /my/output/file; sleep 3; done
конечно, вы можете заменить cat
что-то более полезное, возможно tail
. Или вы можете просто открыть выходные файлы в текстовом редакторе, который имеет функцию автоматического возврата (например, Emacs с M-x auto-revert-mode
). Это делает точно то же самое внутренне-опрашивает файл на предмет изменений и при необходимости обновляет его.
Я также действительно предлагаю вам использовать logging
внутри вашего кода и дать каждой распараллеленной функции свой собственный регистратор (с именем, полученным из параметров функции). (Это может быть проще с небольшим классом, а не с функцией). Таким образом, позже вы сможете отправить все свои выходные данные в файл, и если что-то пойдет не так, вы сможете легко узнать, какой запуск не удался, и извлечь информацию только из этого запуска (с помощью grep!). Я использую этот подход в параллельном коде нечеткого сопоставления (на самом деле для сопоставления музыкальных библиотек), и это бесценно, когда вам нужно разобраться в том, как произошел какой-то странный результат.
*Хорошо, я уверен, что есть какой-то ужасный способ управлять каким-то конкретным терминалом и выводить на него данные, но это не то, что вы имели в виду.