12/16/2016

Java class를 Python에서 사용하기

프로젝트내에서 만든 Java Util class를 Python에서 사용해야 하는 케이스가 발생했다. py4j, jnius, subprocess .., 등등의 방법이 있었다.
py4j
GatewayConnection 방식으로 진행하기에 내부적으로 socket을 사용함. Fault 발생 여지가 있어서 부적절하다고 판단
jnius
Java class를 수행전에 JVM을 start 해야하고 종료시 shutdown 해야 함. Fault 발생 여지가 있어서 부적절하다고 판단
subprocess
os command를 수행하는 방법, 별도의 package를 설치하지 않아도 되고, 위의 package에 비해 fault 발생 여지가 작다고 판단 아래는 샘플 코드 jar파일은 executable jar여야 한다.
#python 2.7

import subprocess def call(value):
cmd = ['java','-jar','{jar 파일 경로}','{arg}',value]
return subprocess.check_output(cmd,shell=False) def main():
result = call("test")
print "result if __name__ == "__main__":
main()
#python 2.7/2.6

import subprocess def call(value):
cmd = ['java','-jar','{jar 파일 경로}','{arg}',value]
fd_open = subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=False).stdout
result = fd_open.read().strip()
fd_open.close()
return result def main():
result = call("test")
print result if __name__ == "__main__":
main()

댓글 없음:

댓글 쓰기