[英]Python Script does not terminate properly
我有一個python腳本,我在終端上使用python main.py
調用。 它啟動一個正確執行的Qt-GUI,並在關閉GUI時終止。
但是,有時會打印最后一條調試消息“over and out”,但腳本本身不會終止。 ctrl + c , ctrl + d和ctrl + z都不會對執行產生任何影響。 在我看來,如果在程序內部拋出異常(並被GUI捕獲),就會發生這種情況。
我不知道如何調試它,因為它顯然不會發生在GUI本身。 我該如何調試並查明,我做錯了什么?
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
form = MainGui()
form.show()
app.exec_()
print "over and out"
編輯:在我看來好像有一些線程仍然活躍在最后。 但是,我並沒有真正使用線程(我不知道Qt在內部做什么......)。 有沒有辦法在最后查看所有正在運行的線程?
編輯2:哦,我的上帝。 解決方案只是重新啟動我的系統。 不知何故,我的操作系統做了一些瘋狂的事情,並阻止腳本終止。
“ ctrl + c , ctrl + d和ctrl + z都不會對執行產生任何影響。”
將這些代碼行添加到程序的標題中, ctrl + c將退出它。
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
如果你想在程序遇到異常時自動進入pdb調試器,只需執行以下操作:
import sys
def excepthook(type_, value, tb):
import pdb
import traceback
# print the exception...
traceback.print_exception(type_, value, tb)
print
# ...then start the debugger in post-mortem mode
pdb.pm()
# we are NOT in interactive mode
if not hasattr(sys, 'ps1') or sys.stderr.target.isatty():
# this stops PyQt from freezing the terminal
from PyQt4.QtCore import pyqtRemoveInputHook
pyqtRemoveInputHook()
sys.excepthook = excepthook
解決方案只是重新啟動我的系統。 不知何故,我的操作系統做了一些瘋狂的事情,並阻止腳本終止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.