Python 기능의 별도 프로세스(Out-of-Process) 실행
R2026b참고
Python® 함수를 별도 프로세스(out-of-process)로 호출할 때는 이에 수반되는 오버헤드가 발생합니다. 이 동작은 성능에 영향을 줍니다. Python 함수를 현재 프로세스 내(in-process)에서 호출하십시오. 이것이 디폴트 모드입니다.
MATLAB®은 Python 스크립트와 함수를 별도의 프로세스에서 실행할 수 있습니다. 별도의 프로세스에서 Python을 실행하면 다음을 수행할 수 있습니다.
MATLAB과 호환되지 않는 일부 타사 라이브러리를 Python 코드에서 사용.
MATLAB 프로세스를 Python 코드에서 비정상 종료가 발생한 부분으로부터 분리.
장시간 실행되거나 응답하지 않는 Python 코드를 Ctrl+C를 눌러 중단. (R2026b 이후)
별도 프로세스로 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 별도 프로세스(out-of-process)를 실행할 때 다음 사항을 유념하십시오.
Python 함수를 별도 프로세스(out-of-process)로 호출하는 경우 Python과 MATLAB 간에 전달되는 변수의 크기는 2GB로 제한됩니다. 이 크기 제한은 데이터뿐 아니라 프로세스 간에 전달되는 추가 정보에도 적용됩니다.
Python 객체를 지우는 작업은 비동기식입니다. 즉, 동기식 호출을 수행한 후에도 Python 객체가 Python 내에 유지될 수 있습니다. 예를 들어, 다음 코드에서는
myList가 소멸되기 전에myList2가 생성될 수 있습니다.myList=py.list; clear myList myList2 = py.list;시스템 메모리를 확보하는 데
clear classes를 사용하면MATLABPyHost프로세스가 종료되고 Python 객체가 지워집니다.clear classes사용에 대한 대안은clear도움말 페이지의 팁 섹션을 참조하십시오.별도 프로세스(out-of-process)로 실행 중인 Python 프로그램이 장시간 실행되거나 응답하지 않는 경우 Ctrl+C를 눌러 중단할 수 있습니다. 그러면
MATLABPyHost프로세스가 종료됩니다. Python을 다시 실행하기 전에, 먼저terminate(pyenv)를 호출하여 Python 환경을 정상적으로 종료해야 합니다. (R2026b 이후)