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