Open shin285 opened 5 years ago
core.py
내의 main은 개발 중 만들어두었던 코드로 삭제해야 합니다.
(이와 별개로) 위 문제는 Java-side에서의 KOMORAN 객체가 초기화되지 않아서 발생하는 문제인데요,
위와 같은 에러가 발생할 때 Py4J JVM이 실행 중인가요? 또는 어떤 경로에서 어떻게 실행하셨는지 알려주시면 원인을 찾는데 도움이 될 것 같습니다.
core.py만 실행시켰습니다. Py4J JVM을 따로 실행시키지 않았습니다.
네, 해당 에러는 (위에서 언급한 것처럼) Java-side의 KOMORAN 객체가 초기화되지 않아서 발생하는 것인데요,
core.py
는 별도로 JVM을 실행시키지 않아도 자동으로 jvm.py
를 불러 JVM을 실행하도록 되어 있기 때문에 Py4J JVM이 실행 중
인지를 문의드렸던 것입니다.
위와 같은 에러가 발생할 때 Py4J JVM이 실행 중인가요? 또는 어떤 경로에서 어떻게 실행하셨는지
를 다시 한 번 확인해주실 수 있으실까요?
PyCharam에서 "python/PyKomoran/core.py"의 main을 실행시켰습니다. 콘솔에서 실행시켜도 같은 에러가 발생합니다. Py4J에 대해서 따로 실행시키지 않았습니다. 확인부탁드립니다.
혹시 komoran 이 multiprocess 에서는 어떻게 작동해야 하는지 알 수 있을까요?
저는 multiprocess 에서 위와 동일한 에러가 발생합니다 komoran 을 어디에서 생성하느냐에 따라 py4j.protocol.Py4JError: kr.co.shineware.nlp.pykomoran.KomoranEntryPoint.co does not exist in the JVM 가 생기기도 하고, 위와 같은 에러가 생기기도 합니다.
process 를 하나로 하면 정상 작동합니다. process 대신 thread 를 이용해서 komoran instance 를 만들고 thread로 넘겨주면 위의 에러 없이 작동되네요
안녕하세요, @zidane100e 님 결론부터 말씀드리면 Multi Process / Thread 지원을 고민하다가 대대적인 구조 개선이 필요함을 인식하고 고민 중(?)인 상태입니다.
위에 알려주신 Py4J 에러는 JVM이 초기화가 되지 않아서 발생하는 문제로 보입니다. 다만, 위 에러를 피하기 위해 JVM 초기화를 하는 경우 여러 개의 PyKomoran Process는 곧 여러 개의 JVM Instance를 생성하게 되어 비효율적입니다. 하나의 JVM 내에서 Multi Thread로 동작하는 식으로 코드를 개선해야 하는데, 현재 Komoran - KomoranEntryPoint(Wrapper)에서는 이와 같은 구조가 담겨있지 않은 상태입니다.
번거로우시겠지만 우선은 Java 기반의 KOMORAN을 사용하고 계셔 주시면 빠른 시간 내에 해결책을 찾아보도록 하겠습니다. ( )
자세히 설명해 주셔서 감사드립니다.
문제 설명
PyKomoran에 있는
core.py
의 main이 실행되지 않습니다.재현 경로
core.py
를 run 시키면 발생기대 상황
komoran의 분석 결과들이 출력됩니다.
환경 정보
어떤 환경에서 이 문제가 발생하였나요?
추가 정보