인프런 커뮤니티 질문&답변
에러메시지가 뜹니다...
작성
·
473
1
print(f'name of behavior:{behavior_name}')
이걸 하려고 하는데...
UnityWorkerInUseException: Couldn't start socket communication because worker number 0 is still in use. You may need to manually close a previously opened environment or use a different worker number.UnityWorkerInUseException: Couldn't start socket communication because worker number 0 is still in use. You may need to manually close a previously opened environment or use a different worker number.
라는 오류가 뜹니다...
어떻게 해결해야 하나요?
답변 2
1
민규식
지식공유자
아 이렇게 worker 0이 사용중이어서 소켓 통신을 시작할 수 없다는 말은 여러개의 유니티 머신러닝 환경을 실행하려고 할 때 확인할 수 있는 에러 메시지입니다. 예를 들어 유니티 머신러닝 에이전트로 만든 환경 하나를 띄워놓고 학습하는 중에 다른 유니티 머신러닝 에이전트 환경을 하나 더 띄우려고 할 때 발생합니다.
Python API를 사용하는 경우와 유니티 머신러닝 에이전트에서 제공하는 알고리즘을 사용하는 경우 각각 이에 대한 해결 방법이 다른데요!
Python API의 경우 UnityEnvironment를 불러올 때 아래와 같이 worker_id에 다른 숫자를 넣어주시면 됩니다.
mlagents learn을 사용하는 경우에는 --base-port 옵션을 사용하시면 됩니다.
ex) mlagents-learn [yaml 경로] --env = [환경 경로] --run-id = [데이터 저장 폴더 이름] --base-port=1
0






감사합니다! 다시 해보니까 잘 작동됩니다!