Асинхронный вызов скомпилированной функции 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 объект, получающий выходные данные консоли
err_stream - Питон 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 объект.