Java 执行 Python 脚本,脚本测试没问题,集成项目中,获取不到数据?
问题描述:
- 描述你的问题
现在是有个需求就是针对上传的人脸图片去做人脸检测,人脸检测功能是通过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也有明显页面跳转效果请问该如何优化,才能提升用户体验