c++ Python并不总是执行Python脚本-问答-阿里云开发者社区-阿里云

开发者社区> kun坤> 正文

c++ Python并不总是执行Python脚本

2019-12-26 15:40:00 405 1

我目前有一个使用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秒,对Python的每个c++调用仍然会执行。因此,我不认为这是一个总时间的问题。例如,如果我执行“time.sleep(1)”,它会休眠一秒钟(比我的Python脚本在第一帧之后的执行时间还要长),那么我的Python脚本仍然会被执行。 有人知道为什么会这样吗?是不是因为跑的时间不均匀?因为运行第一帧需要5秒,之后的每一帧都要快得多。有没有可能是巨蟒在这段时间之后无法跟上? 这是我第一次在硬件上执行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";
}

问题来源StackOverflow 地址:/questions/59384132/c-python-not-always-executing-python-script

取消 提交回答
全部回答(1)
  • kun坤
    2019-12-26 15:40:06

    我敢打赌,第一次执行将以一个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 set\n";
        } else {
            Py_DECREF(res);
            std::cout << "Called the frame function";
        }
        Py_DECREF(pArgs);
    }
    else {
        std::cout << "Did not get the frame function";
    }
    
    0 0
相关问答

40

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 144264浏览量 回答数 40

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 222979浏览量 回答数 162

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146769浏览量 回答数 22

33

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 277515浏览量 回答数 33

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135506浏览量 回答数 42

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256862浏览量 回答数 38

294

回答

Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)

qilu 2014-09-25 13:26:50 431607浏览量 回答数 294

82

回答

OSS入门教程

belle.zhoux 2014-07-07 17:14:27 149360浏览量 回答数 82

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302590浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471375浏览量 回答数 24
+关注
0
文章
13401
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载