Python 기능의 별도 프로세스(Out-of-Process) 실행
참고
Python® 함수를 별도 프로세스(out-of-process)로 호출할 때는 이에 수반되는 오버헤드가 발생합니다. 이 동작은 성능에 영향을 줍니다. MathWorks에서는 Python 함수를 현재 프로세스 내(in-process)에서 호출할 것을 권장하며, 이것이 디폴트 모드입니다.
MATLAB®은 Python 스크립트와 함수를 별도의 프로세스에서 실행할 수 있습니다. 별도의 프로세스에서 Python을 실행하면 다음을 수행할 수 있습니다.
MATLAB과 호환되지 않은 Python 코드에서 타사 라이브러리 사용.
MATLAB 프로세스를 Python 코드에서 비정상 종료가 발생한 부분으로부터 분리.
별도 프로세스로 실행하려면 "ExecutionMode"
인수를 "OutOfProcess"
로 설정하여 pyenv
함수를 호출하십시오. 예를 들어, Python 환경에서 이 list
변수를 만들려고 한다고 가정하겠습니다.
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
이 list
를 별도 프로세스로 만들려면 MATLAB 실행 모드를 "OutOfProcess"
로 설정하십시오. MATLAB은 현재 Python 환경에 대한 정보를 표시합니다.
pyenv(ExecutionMode="OutOfProcess")
ans = PythonEnvironment with properties: Version: "3.11" Executable: "C:\Python311\pythonw.exe" Library: "C:\windows\system32\python311.dll" Home: "C:\Python311" Status: NotLoaded ExecutionMode: OutOfProcess
변수를 만듭니다.
py.list({'Monday','Tuesday','Wednesday','Thursday','Friday'})
ans = Python list with no properties. ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
MATLAB이 MATLABPyHost
라는 이름의 프로세스를 만듭니다.
pyenv
ans = PythonEnvironment with properties: Version: "3.11" Executable: "C:\Python311\pythonw.exe" Library: "C:\windows\system32\python311.dll" Home: "C:\Python311" Status: Loaded ExecutionMode: OutOfProcess ProcessID: "8196" ProcessName: "MATLABPyHost"
참고
Python 객체를 지우는 작업은 비동기식입니다. 즉, 동기식 호출을 수행한 후에도 Python 객체가 Python 내에 유지될 수 있습니다. 예를 들어, 다음 코드에서는 myList
가 소멸되기 전에 myList2
가 생성될 수 있습니다.
myList=py.list;
clear myList
myList2 = py.list;
제한 사항
Python 함수를 별도 프로세스(out-of-process)로 호출하는 경우 Python과 MATLAB 간에 전달되는 변수의 크기는 2GB로 제한됩니다. 이 크기 제한은 데이터뿐 아니라 프로세스 간에 전달되는 추가 정보에도 적용됩니다.