본문 바로가기

프로그래밍

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()

 

태그