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로 제한됩니다. 이 크기 제한은 데이터뿐 아니라 프로세스 간에 전달되는 추가 정보에도 적용됩니다.