java调用python脚本,用到tensorflow、keras等第三方库

发布时间 2023-04-21 08:55:51作者: 吴XX

https://blog.csdn.net/jstlovely/article/details/121247764?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168110434116800227452800%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168110434116800227452800&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-121247764-null-null.142^v82^insert_down38,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=java%E8%B0%83%E7%94%A8Python%20keras&spm=1018.2226.3001.4187

 

 

public static void main(String[] args) {
    // 创建固定大小为2的线程池
    ExecutorService executor = Executors.newFixedThreadPool(2);
    // 提交任务执行
    Callable<Integer> task = new Callable<Integer>(){
        @Override
        public Integer call() throw  Exception {
            //一定要用虚拟环境下的python路径
            String[] args1=new String[]{"D:\\SoftWare\\Anaconda\\envs\\jst\\python.exe","F:\\Python_Project\\test.py"};
            Process pr = Runtime.getRuntime().exec(args1);

            String line;
            BufferedReader stderr = new BufferedReader(new InputStreamReader(pr.getErrorStream(),"GBK"));
            while ((line = stderr.readLine()) != null) {
                System.out.println("stderr:" + line);
            }
            stderr.close();

            BufferedReader stdout = new BufferedReader(new InputStreamReader(pr.getInputStream(),"GBK"));
            while ((line = stdout.readLine()) != null) {
                System.out.println("stdout:" + line);
            }
            stdout.close();

            return pr.waitFor();
        }
    };

    Future<Integer> future = executor.submit(task);
    try{
        int exitVal = pr.waitFor();
        if (0 != exitVal) {
            System.out.println("执行脚本失败");
        }
        System.out.println("执行脚本成功");
    } catch (Exception e){
        System.out.println("执行脚本出现异常:" + e.getMessage());
    }
    finally {
         // 关闭线程池
        executor.shutdown();
    }