我是一个有用的助手,可以为您进行文本翻译。
我正在使用Python编写一个应用程序,通过调用一个使用Python子进程的shell脚本来启动Java中的JVM。然而,我的问题是,正确的方式是,JVM启动并阻塞之后发生的所有其他进程。我需要在调用另一个函数时运行JVM,并且在进程完成运行后停止JVM。
Python代码:
process = subprocess.Popen('runJVM.sh', shell=True, stderr=subprocess.STDOUT)
process.wait()
r = Recommender()
r.load()
assert len(sys.argv) > 1, '%d arguments supplied, one needed' %(len(sys.argv)-1)
print "recommendations" + str(r.get_users_recommendation(sys.argv[1:]))
....
def get_users_recommendation(self, user_list):
j_id_list = ListConverter().convert(class_list, self.gateway._gateway_client)
recs = self.gateway.entry_point.recommend(j_id_list)
return recs
在哪里:
from py4j.java_gateway import JavaGateway
self.gateway = JavaGateway()
我无法运行get_user_recommendations
,因为JVM服务器正在阻止该进程。我该如何不让它阻塞Python脚本的其余部分,并在Python方法完成运行并返回值后杀死它?非常感谢。
CreateProcess
在 Windows 上使用。在 POSIX 系统上,Popen 调用execv(3)
。 - jfs