2017-07-31 34 views
0

我有一個運行多個測試文件的GUI。 所有測試都是使用從線程運行的子進程逐個運行GUI的python文件。如何在隨時關閉子進程的同時殺死子進程

在GUI中,用戶有能力停止運行測試的機器。 我已經找到了如何爲此目的及其作品殺死一個子過程。 參見Killing sub process that run inside a thread

現在,我有另一個問題。 該測試打開了許多我必須按順序關閉的實例。 當我使用kill()方法,所有的實例都沒有關閉,我無法運行進一步的測試。 I.E我在用戶停下來之前在測試中使用的COM端口仍然被佔用,並阻止我運行任何更多的測試。

唯一的補救辦法是關閉GUI並重新開始。

總之,我需要一種方法來隨時殺死一個子進程,但仍然關閉所有的實例,如sys.exit()會做或關閉他的GUI有同樣的效果。 我嘗試使用等待(超時)但除非我錯誤地使用它,它並沒有辦法。

我可以在測試中使用某種中斷,在測試中會調用某些方法,它會按順序關閉它?

回答

0

您應該可以使用類似this solution的東西來識別和終止應用程序啓動的運行測試的子進程。這個解決方案似乎特別適合你的使用情況,即殺死所有後臺進程,以便讓你的應用程序運行更多的測試。

或者,您可以創建一個try-except包裝器或裝飾器,以便在應用程序發送某個信號時允許它們被殺死,但這需要應用程序跟蹤所有已啓動的子過程,以及如果測試在後臺啓動附加子進程,則可能無法正確終止所有進程。

相關問題