2014-09-17 4 views
1

저는 파이썬에서 PY4J (http://py4j.sourceforge.net/)를 사용하여 Java 코드를 실행 중입니다.Java InputStream to Python (PY4J)

내 자바 기능은 InputStream를 돌려 내 파이썬 코드에서 조작 할 싶습니다

자바 코드 :

public InputStream getPCAP(key) { 
     InputStream inputStream = cyberStore.getPCAP(pcapStringKey); 
     return inputStream; 
} 

파이썬 코드 : 내가 얻을 수있는 방법

from py4j.java_gateway import JavaGateway 

gateway = JavaGateway() 
input_stream = PY4J_GateWay.getPCAP(key); 
... 

파이썬에서 InputStream?

파이썬으로 반환하기 전에 다른 코드로 변환해야합니까?

+0

우리는 질문에 대답 좀 더 많은 코드가 필요합니다. – Barthelemy

+0

Py4j를 통해 스트림을 공유하고 파일 시스템 (심지어/dev/shm)에 데이터를 저장하고 일반 파이썬 작업 방식을로드하는 사이에 벤치 마크 비교가 있습니까? –

답변

1

입력 스트림에서 읽고 싶습니다.

Java API를 사용하면 InputStream에서 byte 배열로 읽을 수 있습니다. 이 참조하여 파이썬 bytearray를 전달하는 간단한 방법은 없습니다, 그러나 당신은 쉽게 InputStream에서 읽는 방법을 추가 할 수 있으며, byte 배열 반환

public byte[] read(InputStream stream, int count) throws IOException { 
    byte[] bytes = new byte[count]; 
    stream.read(bytes); 
    return bytes; 
} 

그런 다음 읽기이 메소드를 호출 할 수 있습니다 파이썬을 InputStream는 : getPCAP를 포함하는 클래스와 방법이 클래스의 인스턴스를 생성하고 액세스 할 수 있습니다 :

gateway = JavaGateway() 
input_stream = gateway.getPCAP(key) 
data = gateway.read(input_stream, 1000) # reads 1000 bytes from input_stream