#!/usr/bin/env python3 import time import numpy as np import pinocchio as pin from manager import QueueClient from task import Task, TaskParameters class Boss(QueueClient): def run(self, qs, vqs, aqs): # create some tasks for i, [q, v, a] in enumerate(zip(qs, vqs, aqs)): self.tasks.put(Task(i, q, v, a)) # Wait for the results results = [] for _ in qs: result = self.results.get() print(f'got result {result.identifier} of processed in {result.time:.3f}s : ') results.append(result) print('Got all {tasks} results !') if __name__ == '__main__': # Allocate data to be proceeded. NDATA = 20 qs = np.array([pin.randomConfiguration(TaskParameters.robot.model) for _ in range(NDATA)]) vqs = np.random.rand(NDATA, TaskParameters.robot.model.nv) * 2 - 1 aqs = np.random.rand(NDATA, TaskParameters.robot.model.nv) * 2 - 1 start = time.perf_counter() Boss().run(qs, vqs, aqs) total = time.perf_counter() - start print(f'Completed in {total:.3f} secs')