주요 콘텐츠

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

참고 항목