这是我在这里的第一个问题。我正在尝试使用 ScheduledThreadPoolExecutor 定期从 java 运行并行 python 脚本(即同一脚本的多个实例)。我试图做的是使用 ProcessBuilder 类。为了测试这个概念,我将第一个脚本放入无限循环,而第二个脚本写入文件并退出。我需要制作的 Python 脚本应该彼此相同,所以我尝试从实现可运行的同一类的多个实例中运行这两个脚本。
然而,第二个脚本永远不会启动。我设法通过创建许多具有完全相同可运行的类来解决这个问题。但是拥有 10-20 个相同的类似乎非常不切实际。那么我可以在一个可运行文件中以某种方式做到这一点吗?这是显示我如何尝试使用 ProcessBuilder 运行脚本的代码:
public class TestScripts{
public static void main(String[] args){
ScheduledThreadPoolExecutor threadPool = new ScheduledThreadPoolExecutor(2);
threadPool.scheduleAtFixedRate(new MyTask1(), 1,2, TimeUnit.SECONDS);
threadPool.scheduleAtFixedRate(new MyTask1(), 1,2, TimeUnit.SECONDS);
}
}
class MyTask1 implements Runnable{
public void run(){
System.out.println("Task1 is running");
ProcessBuilder processBuilder = new ProcessBuilder("C:\\Python27\\python.exe",
"C:\\Python27\\test.py");
ProcessBuilder processBuilder2 = new ProcessBuilder("C:\\Python27\\python.exe",
"C:\\Python27\\test2.py");
processBuilder.redirectOutput(Redirect.INHERIT);
try {
Process process = processBuilder.start();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Process process2 = processBuilder.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}