





















你现在的实现方式每次调用recognizeSliderGap都会创建一个新的Python进程,这确实会有性能开销。我们可以通过进程池或守护进程的方式优化。这里有几种解决方案:
package reyo.sdk.utils.opencv.slidecaptcha;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import com.google.gson.Gson;
public class SlideDistanceCalculatorPy {
private static final ExecutorService executor = Executors.newFixedThreadPool(1);
private static Process pythonProcess = null;
private static BufferedReader reader = null;
private static PrintWriter writer = null;
private static final Gson gson = new Gson();
public static class RecognitionResult {
private boolean success;
private int center_x;
private String error;
public boolean isSuccess() {
return success;
}
public int getCenterX() {
return center_x;
}
public String getError() {
return error;
}
}
需要修改你的Python脚本,添加守护进程支持:
创建Python HTTP服务:
Java客户端:
方案1(进程池)最适合你的需求:
单次初始化Python进程
通过标准输入输出通信
性能最好,没有HTTP开销
适合高频调用
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。