2012-05-15 38 views
0

如何在Python中的守護進程線程中觸發主線程中的異常(運行阻塞代碼)?我有一個守護進程線程,定期檢查一個數據庫的記錄,指出它的當前進程應該終止(即用戶已按下「取消」按鈕)。在我的主要非守護進程線程中,我正在對外部進程執行阻塞調用,我無法輕易修改它以正常終止。但是,當我手動觸發一個KeyboardInterrupt時,主線程可以正常處理正常的KeyboardInterrupt。從Python中的守護進程線程觸發主線程中的異常

因此,如果我的守護線程收到terminate命令,我該如何在我的主線程中引發異常來終止我的進程?

回答

1

在挖掘線程文檔後,我終於找到解決方案爲interrupt_main()

+0

該鏈接應爲:https://docs.python.org/3/library/_thread.html 這是從代碼停止Django的罕見解決方案。 – user508402

0

您可以使用returncode屬性獲取您的子過程返回碼。如果它與零不同,則提高某些值。

編輯:我混淆了子進程和多處理模塊。然而,多處理模塊中有一個exitcode屬性,它看起來與子流程returncode屬性相似。

+0

我的問題涉及線程,而不是多處理。 – Cerin