从c++中停止嵌入Python提示符
Stop embedded Python prompt from C++
我正在运行嵌入在c++应用程序中的Python。该程序由一个Qt GUI和一个工作QThread组成,其中进行计算。用户可以选择从文件中运行Python脚本或启动Python提示符。两者都在QThread中运行。当python脚本完成或退出python提示符时,程序退出。但是,我想处理用户请求退出GUI的情况。
如果运行Python脚本,我可以通过调用PyErr_SetInterrupt
来实现这一点(参见停止嵌入式Python)。Python解释器停止,我们可以正常退出。但是,我还没有找到一个好方法来强制Python提示符退出。
我已经尝试向stdin
(与ungetc
)提供字符,希望Python提示接收它们,但没有成功。我从一个重载的PyOS_InputHook
中做到这一点,当Python提示符正在运行时,我用它来捕获Qt事件。
你知道如何正确地强制Python提示符退出吗?
您能否在QThread
子类上设置一个插槽接收器,以便在适当的上下文中为您调用PyErr_SetInterrupt
?
如果不是使用QThreads,而是在一个单独的进程中运行你的嵌入式Python解释器,你可以在你认为合适的情况下kill
它,或者至少你可以在POSIX-y平台上实现更清晰的关注点分离;
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- 如何在C++中使用pybind11加载一个pickle python列表
- 如何在c++中使用system()来运行包含空格的python脚本
- python集合的C++等价物是什么.计数器
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 从python调用openMP共享库时,未定义opnMP函数
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 如何将真正的字符串从python c-api转换为python脚本
- 从c++中停止嵌入Python提示符