Python脚本无法正常终止
发布时间:2020-12-20 13:25:38 所属栏目:Python 来源:网络整理
导读:我有一个 python脚本,我在终端上使用python main.py调用.它启动一个正确执行的Qt-GUI,并在关闭GUI时终止. 但是,有时会打印最后一条调试消息“over and out”,但脚本本身不会终止. ctrl c,ctrl d和ctrl z都不会对执行产生任何影响.在我看来,如果在程序内部抛
我有一个
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_,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |