C++ Python 并不总是执行 Python 脚本
C++ Python Not Always Executing Python Script
我目前有一个硬件连接到使用MFC(Windows编程(框架的C++代码。基本上,硬件将图像帧传递给我的C++代码。在我的C++代码中,我使用 CPython(Python 嵌入C++(API 调用 Python 脚本来在该图像上执行模型。不过,我一直注意到图像的一些奇怪行为。
我的C++代码正在完美地执行我的 Python 脚本,直到 80-90 范围内的某个帧。在那之后,由于某种原因,我的C++代码会停止执行 Python 脚本。尽管如此,C++代码仍然正常运行 - 除了它没有执行 Python 脚本的事实(我刚刚说过(。
需要注意的是:我的 Python 脚本第一次执行需要 5 秒,但在第一帧之后执行每一帧只需要 0.02 秒(我认为是由于模型设置(。
起初,我认为这是速度问题,所以我用一个时间不同的"time.sleep(("调用替换了我所有的 Python 代码,即使我每次休眠 5 秒C++对 Python 的调用仍然总是被执行。因此,我认为这不是总时间的问题。例如,如果我做"time.sleep(1(",它休眠一秒钟(这比第一帧之后的Python脚本执行时间长(,我的Python脚本仍然总是被执行。
有谁知道为什么会发生这种情况?可能是因为运行时间不均匀吗?因为运行第一帧需要 5 秒,然后每帧运行速度明显更快。难道是Python在那段时间之后无法赶上吗?
这是我第一次在硬件上执行C++/Python,所以我也是新手。任何帮助将不胜感激!
为了了解我的代码,这里有一个片段:
if (pFuncFrame && PyCallable_Check(pFuncFrame)) {
PyObject* pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs, 0, PyUnicode_FromString("img.bmp"));
PyObject_CallObject(pFuncFrame, pArgs);
std::cout << "Called the frame function";
}
else {
std::cout << "Did not get the frame function";
}
我敢打赌,第一次执行以 Python 异常结束,直到您在第二次迭代中执行一些新的 Python 语句才会清除该异常,因此该异常会立即失败。我建议修复内存泄漏并添加一些错误处理代码以获得一些诊断(无论哪种方式都很有用(。例如(没有尝试过,因为你没有提供可编译的示例,但以下内容应该不会太远(:
if (pFuncFrame && PyCallable_Check(pFuncFrame)) {
PyObject* pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs, 0, PyUnicode_FromString("img.bmp"));
PyObject* res = PyObject_CallObject(pFuncFrame, pArgs);
if (!res) {
if (PyErr_Occurred()) PyErr_Print();
else std::cerr << "Python exception without error setn";
} else {
Py_DECREF(res);
std::cout << "Called the frame function";
}
Py_DECREF(pArgs);
}
else {
std::cout << "Did not get the frame function";
}
- C++ Python 并不总是执行 Python 脚本
- 在使用PyInstaller冻结Python脚本时包含一个C++可执行文件
- 如何在 ubuntu 上的 php 脚本中获取程序(c,c++,java,python,php)的执行时间和内存使用量?
- 如何从C++执行python
- 如何在 Python 或 C++ 中执行任意字符串?
- C++ 中的嵌入式 Python 无法执行 pygame
- 无法从Linux,C ++执行"my_script" python脚本"main(filename)"功能;pModule = PyImport_Import(pName);返回空值
- 如何在 Heroku 中的 Python 服务器上执行 "g++" 命令?
- 执行 c++ 中字符串中提供的 Python 函数
- C++中更快地执行两个程序的可能解释(使用 Python 比较)?
- 保存Cmake find_program中的可执行文件,以便它可以由Python运行
- 在C++中嵌入 Python:解释器在执行过程中的持久性
- QtCreator拒绝执行自定义python程序作为构建步骤命令
- 用cpp、python和csv文件制作一个可执行文件
- 有没有像Python那样的C++执行/数据模型
- 如何在没有sudo的情况下执行python OpenCV程序
- 在python和R中逐步执行C++程序
- 如何将命令行参数作为字符串传递给从C++执行的嵌入式 Python 脚本
- Q不执行 python 脚本
- 从 Python 执行 cpp 文件