我正在使用JPMML Evaluator库,PMML实例对于所有评估者都是通用的,它会阻止评估者并创建锁定。以多线程方式处理。
//single threaded
PMML pmml = <new pmml>
//multithreaded
ModelEvaluator<MiningModel> someModelEvaluatorThread = new MiningModelEvaluator(genderPmml);
它会起作用还是达到性能。我没有创建特定于pmml线程,因为我不想一次又一次地解析同一个文件。
答案 0 :(得分:1)
JPMML-Evaluator库的README.md文件说:
模型评估程序类遵循函数式编程原则,完全是线程安全的。
如果您在所有线程之间共享相同的模型评估程序实例,或者为每个线程创建单独的模型评估程序实例,则无关紧要 - 它们将非常好地相处。可变状态封装在org.jpmml.evaluator.EvaluationContext
对象实例中,该实例对每个评估请求都是“私有的”。
此外,JPMML-Evaluator库不包含任何synchronized
代码块,并且不使用任何锁定机制。当您启动更多线程时,应用程序的吞吐量应该线性增加。