并行文件I / O Java

时间:2015-06-12 21:30:13

标签: java

我有一个使用JNI调用Java的Fortran程序。我的Java函数接收一个数组,将数组写入一个文件,对一个计算某事的Python函数进行系统调用,然后将结果写入一个文件,该文件又被Java函数读取并传递回Fortran。这按预期工作。 不幸的是,我不能使用Jython,因为Jython还不支持NumPy。 我的程序的串行实现按预期工作,但是当我运行使用OpenMP的Fortran代码的并行实现时,文件I / O就搞砸了。有没有什么办法可以安全地从并行实现的文件中读/写?

1 个答案:

答案 0 :(得分:2)

我假设你使用硬编码的文件名。问题是所有活动线程都使用相同的文件将数据传递给下一个程序。尝试将它们分开。如果您运行3个OpenMP线程,则需要3个文件进行数据传输。

对于分离,您可以根据UUID为文件命名,并将该文件名作为参数传递给python程序。

return json_encode( $xml );

Python程序:

String filename = "myFile" + UUID.randomUUID() + ".dat";
Process p=Runtime.getRuntime().exec("python myProgram.py " + filename); 
p.waitFor();