Вызовите скомпилированную функцию MATLAB асинхронно

Асинхронно вызовите скомпилированную функцию MATLAB®, которая использует объект Python®, возвращенный в функцию initialize() путем передачи async = True.

future = my_client.function_name(in_args, nargout=nargs,
                                 stdout=out_stream,
                                 stderr=err_stream,
                                 async=True)
  • my_client — Имя объекта возвращено в initialize()

  • functionName Имя функции, чтобы вызвать

  • in_args — Список, разделенный запятыми входных параметров

  • nargs — Количество результатов ожидается от сервера

  • Объект out_stream — Python StringIO, получающий консоль, выводится

  • Объект err_stream — Python StringIO, получающий вывод ошибок

Когда ключевое слово async установлено в True, функция MATLAB помещается в очередь обработки, и объект Python Future возвращен. Вы используете объект Future получить результаты, когда функция MATLAB закончена, обработав.

Чтобы вызвать функцию MATLAB c1,c2= copy(o1,o2) от пакета copier асинхронно, используйте следующий код:

>>> import mutations
>>> import matlab
>>> myMutator = mutations.initialize()
>>> m1 = matlab.double([1,2,3])
>>> m2 = matlab.double([10,20,30])
>>> m3 = matlab.double([100,200,300])
>>> resultFuture = myMutator.mutate(m1,m2,m3, async=True)
>>> while !resultFuture.done():
...    time.sleep(1)
...
>>> result = resultFuture.result()

Совет

Можно отменить асинхронные запросы с помощью метода cancel() объекта Future.

Похожие темы