这是我的程序,我在mac系统上运行它。
public static void main(String args[]) throws IOException {
Scanner scanner=new Scanner(new File("annotated_sentences.csv"));
int count=0;
scanner.nextLine();
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String split[]= line.split(",");
String text = split[4];
text=text.replace("&", "#");
Runtime run = Runtime.getRuntime();
Process proc = run.exec(new String[]{"/bin/bash", "-c",
"curl --data text="+text+" https://gate.d5.mpi-inf.mpg.de/aida/service/disambiguate > /StanfordFile/"+count});
count++;
}
scanner.close();
}
我希望处理大约30000行,但每次到335时都会处理。例外情况就出来了。
Exception in thread "main" java.io.IOException: Cannot run program "/bin/bash": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:485)
at ProcessStanford.main(ProcessStanford.java:20)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:185)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
... 3 more
是什么原因?
答案 0 :(得分:0)
受到评论的启发,我发现问题是因为我打开了太多的进程一次并且&#34; bin / bash&#34;无法同时处理它们。经过多次测试,我发现在2分钟内运行100个进程是安全的(因为平均来说,处理请求的云服务的速度是1个请求/ 2分钟)。所以我只添加了一行if(count%100==0)TimeUnit.MINUTES.sleep(2);
并解决了问题。