我们有一个用Java编写的程序和一个用Python编写的程序,并且需要以乒乓方式将它们组合在一起,每次交换一个长度为100,000的整数数组,并花费大约0.1-1秒来完成它们的工作:
请注意
我对Java更熟悉,并且了解共享内存支持的文件方法可能是最快的。 This似乎与Java方面相关,但是如何让每个程序等待/阻止另一个程序完成其工作并在另一个开始读取之前更新共享内存?我听说过一种叫做“信号量”的东西,但无法弄明白。
这些是我的后备想法,但也许它们更好?
答案 0 :(得分:1)
寻找快速中介数据服务器以协助它们之间的通信。 Redis会做的伎俩。你需要两个数据结构:
my_project:list
称为参考。然后进行以下互动:
my_project:list
所需的任何操作,它都会锁定其他程序。答案 1 :(得分:1)
您可以尝试使用jep在同一进程中组合java和python。最新版本使用sharing memory和java numpy ndarrays在python和java之间添加了对direct buffers的支持。这样就可以在不进行任何复制的情况下共享数据,从而提供最佳性能。