如何从Python运行可执行文件?

时间:2014-01-30 02:06:03

标签: python c++

我有一个可执行文件(面部识别),由我们的一个程序员编写,他们不再和我们在一起。它需要一个命令行参数并将结果打印到STDOUT。

我需要能够在Python中使用它,但性能很重要,所以我不确定是否应该使用subprocess。我需要捕获程序的输出,所以更好的想法是修改代码使其成为C ++库,并在Python中为它编写包装器?与使用子流程相比,这会如何影响性能?

我查看了运行C代码的Python文档,发现this但答案here不同。第二种方法甚至不使用Python.h所以我有点困惑。当表现很重要时,最好的方法是做什么?

1 个答案:

答案 0 :(得分:3)

首先我要告诉你我认为子进程方法和运行外部应用程序以及从STD输出读取输出将是缓慢且不可靠的。我不会推荐这种方法。

相反,这里有一些建议:

  • 您可以使用C或C ++创建Python扩展,您可以在线找到大量有关它的资源。因此,您可以将当前代码转换为Python扩展格式,只需使用Python扩展框架模板,在其中集成您的函数和代码,您将拥有python扩展,只需您可以从Python代码中调用它的函数。请参阅:http://docs.python.org/2/extending/index.html

  • 如果您使用的是Linux,则将当前的C ++代码直接转换为DLL并导出要从python调用的代码函数;如果使用的是Linux,则只需将其转换为共享库。它将被编译为.so。然后,您可以在Python代码中将函数作为外部库调用。示例说明:http://www.linuxforu.com/2010/05/extending-python-via-shared-libraries/

我从来没有尝试过它们,但似乎这些项目可以帮助你满足你的需求: