如何中断嵌入在C应用程序中的python解释器
发布时间:2020-12-16 07:24:25 所属栏目:百科 来源:网络整理
导读:我们有一个C QT应用程序,我们在其中嵌入了 python. 我们为用户提供了两个接口 ??????1.执行文件 ??????2.停止执行. 我们使用PyRun_FileExFlags在非GUI线程中执行python文件. 我们想中断python文件的执行(假设python文件有一个无限循环,它永远不会完成执行).
我们有一个C QT应用程序,我们在其中嵌入了
python.
我们为用户提供了两个接口 ??????1.执行文件 ??????2.停止执行. 我们使用PyRun_FileExFlags在非GUI线程中执行python文件. 我们想中断python文件的执行(假设python文件有一个无限循环,它永远不会完成执行). 怎么打断? 我们试过以下 1:设置跟踪功能 PyGILState_STATE state; state = PyGILState_Ensure(); PyEval_SetTrace(TraceHook,NULL); PyGILState_Release(state); 2:跟踪功能 int TraceHook(PyObject *obj,PyFrameObject *frame,int what,PyObject *arg) { if (b_isInterrupted) { PyGILState_STATE state; state = PyGILState_Ensure(); PyErr_SetString(PyExc_KeyboardInterrupt,"Python Interrupted."); PyGILState_Release(state); } return 0; } Python执行不会中断. 解决方法
PyEval_SetTrace仅影响当前线程.
你想要 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |