Вызовите скомпилированную функцию 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()

  • function_name - Имя функции, которую нужно вызвать

  • in_args - Разделенный запятыми список входных аргументов

  • nargs - Количество результатов, ожидаемых от сервера

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

  • err_stream - StringIO Python объект получает вывод ошибки

Когда async для ключевого слова задано значение Trueфункция MATLAB помещается в очередь обработки и в Future Python объект возвращается. Вы используете 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 объект.

Похожие темы