用 Julia 语言调用 Python 或者 Matlab 有哪些痛点?


#1

我现在在做一个项目。项目组的其他成员有用 Matlab 的,有用 Python 的。老板说,要我确定到最后是可以调用其他人写的代码(函数,包,数据库之类的)。因为 Julia 相对来说还比较年轻,所以就想问一下,用 Julia 语言调用 python 或者 Matlab 还算顺畅和方便吗?performance 如何呢? 诸位有没有可以推荐的文献或者建议?


#2

调用Python很容易,而且别人还能调用你的Julia代码。学习下面两个包怎么用就行了

pyjulia
PyCall.jl

MATLAB不清楚,但是MATLAB代码本身和Julia很像。


#3

顺便提一句,Julia应该是目前除了Lua以外FFI(Foreign Function Interface)开销最小的


#4

我之前测试的情况是,用PyCall调用Python的时间大约是直接执行Python的1~2倍(记得作者有在一个issue里提到,他觉得这个性能是可以接受的)


#5

不会出现有些不能调用别人写的代码的现象吧?


#6

Python我确定不会。MATLAB不知道。


#7

benchmark driven developement…


#8

涉及多个语言,建议项目整体用 hourglass interfaces:

https://www.slideshare.net/StefanusDuToit/cpp-con-2014-hourglass-interfaces-for-c-apis

底层 C++,中间一层 C89, 上层用啥语言都能无缝 interop.


#9

wrapper 生成工具:

  • Julia - C: Clang.jl
  • Julia - C++: CxxWrap.jl
  • Python - C: cffi/ctypes
  • Python - C++: pybind
  • Matlab - C/C++: mex

#10

补充, python-C/C++: swig, cython