【发布时间】:2013-12-16 00:34:57
【问题描述】:
我正在用 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 方法完成运行并返回值后将其杀死?非常感谢。
【问题讨论】:
标签: python subprocess