从调用Python脚本的Java程序接收数据太慢

时间:2019-07-17 01:13:08

标签: python bash sys

我有一个从Java程序调用的python脚本 Java程序将数据馈送到python脚本sys.stdin,并且Java程序从python进程outputstream接收数据。 知道的是这个。 从Java程序上以10MB的数据运行命令“ python script.py”大约需要35秒。 但是,运行命令“ python script.py> temp.data”然后运行cat temp.data明显更快。 随着数据变大,性能的数量级变得更加严峻。

为了解决这个问题,我在想也许有一种方法可以更改sys.stdout以模仿我在做什么。 或者,也许我可以将python脚本输出通过管道传输到虚拟文件。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

当您将Java程序写入一个文件句柄并从另一个文件句柄读取时,这可能是一个缓冲问题。 Java中的顺序和写入的大小都不理想,并且会降低速度。

当您要求python取消缓冲时,我会尝试使用“ python -u script.py”来查看它的作用,这应该比较慢,但可能会诱使您的调用程序以不同的方式加速运行,也许更快。

我认为,更大的解决方法是在进行测试时批处理代码并读取生成的文件,或者使用posix select()或filehandle事件来处理Java如何对其读写进行计时。 / p>