从 Django 框架运行 C++ 程序

Posted

技术标签:

【中文标题】从 Django 框架运行 C++ 程序【英文标题】:Run a C++ Program from Django Framework 【发布时间】:2010-01-19 05:27:42 【问题描述】:

我需要。从某种意义上说,我从 views.py 中的 UI 获得输入。获得这些输入后,我需要使用我的 C++ 程序处理输入并使用这些结果。有可能吗?

【问题讨论】:

【参考方案1】:

将该 C++ 程序编译为可执行并使用来自 python 的 subprocess 模块调用

【讨论】:

【参考方案2】:

您可以使用 swig 创建一个可以在 python 中导入的 C++ 模块。 另一种选择是 boost::python (但就我个人而言,我更喜欢 swig)。

【讨论】:

【参考方案3】:

一种方法是使用os.popen。假设您的 C++ 可执行文件位于系统范围的路径中并命名为 mycpp,您将执行以下操作:

results = os.popen('mycpp %s' % user_input).read()

但是,如果您经常调用此命令,这可能会在计算上变得非常昂贵,因为os.popen 基本上会分叉出一个子进程。此外,正如文档中所述,它自 Python 2.6 以来已被弃用,因此请谨慎操作。

【讨论】:

它不仅已被弃用,而且没有理由使用它。如 S.Mark 的回答中所述,subprocess 模块中提供了完全相同的功能。【参考方案4】:

假设您在 *nix 上,编译您的 C++ 程序并将其存储在系统的某个位置,例如 /home/rishabh/myexe。

现在从您的 django 应用程序使用命令模块调用可执行文件:

import commands

status, res = commands.getstatusoutput("/home/rishabh/myexe")

# status contains process status (0 for success, non-zero for unsuccesful termination) and res contains the output of the process

【讨论】:

以上是关于从 Django 框架运行 C++ 程序的主要内容,如果未能解决你的问题,请参考以下文章

Django rest 框架,Django 通道,Ionic2 - websocket 握手错误

《Django框架从入门到实战》目录

《Django框架从入门到实战》目录

从 django rest 框架中的序列化程序发送自定义错误响应?

CSRF 和 CORS 与 Django(REST 框架)

Django框架之初识