как закрыть родительский процесс, если какой-либо из дочерних процессов завершается?
if __name__ == "__main__":
p1 = multiprocessing.Process(target=startFlaskServer)
p2 = multiprocessing.Process(target=startWebview)
p1.start()
time.sleep(2)
p2.start()
Обратите внимание, что time.sleep(2) требуется, чтобы веб-сервер flask загружался до оболочки графического интерфейса. Как отредактировать мой скрипт, чтобы, когда пользователь закрывает окно графического интерфейса (p2), веб-сервер flask (p1) также закрывался?
Спасибо!






Это неправильный способ сделать это. Вы должны использовать любые подходящие средства межпроцессного взаимодействия (например, конвейеры), чтобы узнать, когда 'startFlaskSever' завершен, а затем запустить 'startWebView'. Что делать, если что-то в p1 занимает больше 2 секунд?
Тот же механизм связи следует использовать для закрытия любого процесса на основе состояния любого другого процесса.
Подробнее здесь: https://docs.python.org/3/library/multiprocessing.htmlhttps://docs.python.org/3/library/ipc.htmlhttps://pymotw.com/3/multiprocessing/communication.html
В конце вашего кода присоединитесь к процессу GUI. Это будет ждать завершения процесса. Используйте метод, чтобы закрыть другой процесс. Во многих случаях terminate() должен заключать сделку:
p2.join()
p1.terminate()
Более упорным процессам может понадобиться .kill().