Java 执行 Python 脚本,脚本测试没问题,集成项目中,获取不到数据?

 

问题描述:

  1. 描述你的问题
    现在是有个需求就是针对上传的人脸图片去做人脸检测,人脸检测功能是通过java这边去调用python程序,看到普遍有两方式,第一种是:通过Jython.jar提供的类库实现 ,第二种方式是:通过Runtime.getRuntime()开启进程来执行脚本文件,现在采用的是第二种方式,测试的时候没问题,将其执行到项目中,通过 http 接口调用测试,立马返回数据,且为空的。

测试通过
服务器上,通过java测试单个class文件,正常返回数据(7s的时间,由于服务器性能比较差),集成在项目中,通过post 测试,立马返回数据,且数据为空,后面尝试设置当前线程 sleep 10s,还是空数据

root@smartconstruction:/zzt/face-detect# java PyExecuteCmd
main stringbuilder [18.621605661813042, 1]
public class PyExecuteCmd {

    private static final String cmd = "python3 /zzt/face-detect/picdim.py ";

    public static void main(String[] args) {

        File file = new File("/zzt/face-detect/156654987537916313.jpg");
        String[] ret = execute(file, 12312412L);
        System.out.println(Thread.currentThread().getName() + " stringbuilder " + Arrays.toString(ret));
    }


    /**
     * Get PictureQuality HumanNum for example 12.944183177157162 1
     *
     * @param file
     * @param fileNameCrc
     * @return 12.944183177157162 1
     */
    public static String[] execute(File file, Long fileNameCrc) {

        if (Objects.isNull(file)) {
            return null;
        }
        String absolutePath = file.getAbsolutePath();
        String command = cmd + absolutePath;

        Process proc;
        try {
            proc = Runtime.getRuntime().exec(command);
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            StringBuilder stringBuilder = new StringBuilder();
            while ((line = in.readLine()) != null) {
                stringBuilder.append(line).append(" ");
            }
            in.close();
            proc.destroy();
            String[] resultArr = stringBuilder.toString().split(" ");
            return resultArr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

安卓内嵌h5在首页打开时白屏几秒,请问如何优化?页面之间跳转使用window.location.href也有明显页面跳转效果请问该如何优化,才能提升用户体验