Асинхронный вызов скомпилированного 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
объект.