Skip to content
Snippets Groups Projects
boss.py 1.11 KiB
#!/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")