从Java运行带有numpy依赖的Python脚本
在一个Java应用程序中,我需要使用一个特定的图像处理算法,而这个算法目前是用Python实现的。考虑到这个脚本使用了Numpy库,最好的解决办法是什么呢?
我已经尝试过用jythonc编译器把这个脚本编译成Java,但似乎它不支持像Numpy这样的本地库依赖。我也尝试过使用Jepp,但在导入Numpy时也遇到了ImportError错误。
有什么建议吗?
3 个回答
0
虽然Joe的回答很简单,但如果图片很大,你可能会遇到性能问题(需要进行两次完整的写入和读取)。我不是Java专家,但根据这个链接,你可以开发C和Java之间的连接。你也可以用Python来做同样的事情(如果你不想学习Python的C接口,可以使用ctypes或cython)。
通过这些方法,你可以自己在C语言中搭建一个Python和Java之间的桥梁,这样就可以直接传递图片数据的指针(这样比在硬盘上写入和读取要快得多)。
3
如果你在用Numpy,可能需要用C语言的Python,因为它是一个编译过的扩展。我的建议是把图片保存到硬盘上,可能可以先存成一个临时文件,然后再通过子进程来调用Python。如果你在处理二进制数据,甚至可以尝试在Java中进行内存映射,然后把数据的路径传给子进程。
另外,根据你的具体情况,你也可以在Python中搭建一个简单的数据处理服务器,接受请求并返回处理后的数据。