6

您好我想使用 python 在网络上部署一个 matlab 应用程序。有没有办法做到这一点。我已根据数学作品网站上的文档将我的应用程序转换为 jar 文件(java 类)。有人可以指出我前进的正确方向吗

4

1 回答 1

6

您的 Matlab 代码被打包为 Jars 的事实在这里可能没有太大帮助,至少对于纯 Python 没有帮助。

有几种方法可以获取用 Java 编写的代码并将其公开给 Python。

杰通

如果您愿意给 Jython 一个机会,这可能是为您的 jar 提供 Django 接口的一种非常简单的方法。

基本上,您将编写一个普通的 Django 应用程序,并使用 Jython 与您的 Jars 一起工作。假设您不依赖于 CPython,这可能是两全其美的。

Django-Jython

Java 兼容接口

在 CPYTHON 上,以下任一项目都将帮助您使用 Jar 文件中的代码:

  • JCC : 创建一个 Python 扩展模块来包装你的 Jar 文件
  • JPype:提供一个 API,用于运行 JVM 并从 Python 调用在该 JVM 中运行的代码。

分离过程:

如果您有一个用 Matlab(实际上是任何语言)编写的独立程序,您可以将其作为 Django 应用程序的子进程执行。您将在 Django 中查看一个简单的 Web 表单,该表单允许您提交值作为此过程的输入,然后在您的视图中(在验证表单之后)您会执行以下操作:

command = "mymatlabprogram.exe %s"%(arg1,)
process = subprocess.Popen(command.split())
stdout, stderr = process.communicate()

假设有效,您可以从标准输出中提取答案或从标准错误中提取错误消息。您可以提供由该进程创建的图像等。一旦这样的事情起作用,您可以查看 celeryd 以从您的网络应用程序中提取子进程内容。

使用单独进程的优点是您可以将 Matlab 代码中的错误与破坏您的 Web 应用程序隔离开来,反之亦然。缺点是您必须序列化所有内容并在客户端浏览器和您的 Web 应用程序之间、Web 应用程序和可执行文件之间以及返回给客户端之间多次工作。

于 2011-05-02T13:24:48.683 回答