我正在使用Py4j module.The实现网关服务器自动化每次用户调用function.The时都需要启动网关服务器,我面临的问题是我无法在后台运行该功能。代码如下:
def mvn():
logger = open("log.txt", 'w')
logger.seek(0)
thread1 = Thread(target=Popen, args=("./runJVM.sh"),kwargs=
{"stdout":logger})
thread1.daemon = True
thread1.start()
# stdout, error = proc.communicate()
# logger.write(stdout)
logger.close()这里有两个问题:1)如果我将kwargs stdout指定给logger (一个用来检查输出的日志文件),它会抛出一个错误,告诉我stdout指定了多个参数。
2)如果我不指定stdout选项,线程的输出将显示在ipython终端上,而这不是我想要的。
我想要的就是在后台调用服务器,这样其他函数就可以访问java网关服务器,并从可以在ipython中使用的方法中访问方法。
您可以放心地假设,当直接通过终端运行时,mvn函数工作正常。
谢谢
发布于 2017-07-08 01:19:59
我找到了这个问题的答案。
我已经创建了一个线程,它将接受Popen命令,接受一个小的shell脚本作为输入,并将stdout参数作为kwargs传递,这样就不会显示输出。服务器已被调用,并且可以从其他函数中使用。
希望这能有所帮助
https://stackoverflow.com/questions/44937395
复制相似问题