我有一个不再与我们在一起的程序员所写的可执行文件(面部识别)。它需要一个命令行参数,并像这样将结果打印到STDOUT。
我需要能够在Python中使用它,但是性能很重要,因此我不确定是否应该只使用subprocess。我需要捕获程序的输出,所以将代码修改为C ++库并在Python中为其编写包装是更好的主意吗?与使用子流程相比,这对性能有何影响?
我查看了用于运行C代码的Python文档,并发现了这一点,但这里的答案有所不同。第二种方法甚至不使用Python.h,所以我有些困惑。当性能很重要时,做我需要的最好的方法是什么?
首先,我必须告诉您,我认为子处理方法和运行外部应用程序以及从STD输出读取输出将是缓慢且不可靠的。我不推荐这种方法。
相反,这里有一些建议:
您可以使用C或C ++创建Python扩展,您可以在线找到许多有关它的资源。因此,您可以将当前代码转换为Python扩展格式,而只需使用Python扩展框架模板,在其中集成您的函数和代码,您将拥有一个python扩展,只需您就可以从Python代码中调用它的函数。请参阅:http : //docs.python.org/2/extending/index.html
如果您在Windows中,则将当前的C ++代码直接转换为DLL,并导出要从python调用的代码的函数;如果使用Linux,则将其转换为共享库。它将编译为.so。然后,您可以在Python代码中将函数作为外部库进行调用。带有说明的示例:http : //www.linuxforu.com/2010/05/extending-python-via-shared-libraries/
我从未尝试过它们,但似乎这些项目可以为您提供所需的帮助:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句