Skip to content
Snippets Groups Projects
Commit c1c0b78f authored by Guilhem Saurel's avatar Guilhem Saurel
Browse files

pre-commit

parent 922c2d2d
No related branches found
No related tags found
No related merge requests found
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.2.0
hooks:
- id: check-added-large-files
- id: check-ast
- id: check-executables-have-shebangs
- id: check-json
- id: check-merge-conflict
- id: check-symlinks
- id: check-toml
- id: check-yaml
- id: debug-statements
- id: destroyed-symlinks
- id: detect-private-key
- id: end-of-file-fixer
- id: fix-byte-order-marker
- id: mixed-line-ending
- id: trailing-whitespace
- repo: https://github.com/psf/black
rev: 22.3.0
hooks:
- id: black
- repo: https://github.com/PyCQA/flake8
rev: 4.0.1
hooks:
- id: flake8
......@@ -10,11 +10,11 @@ class Boss(QueueClient):
def run(self):
while True:
task = random.randint(5, 1e4)
print('new task:', task)
print("new task:", task)
self.queue.put(task)
print('tasks left:', self.queue.qsize())
print("tasks left:", self.queue.qsize())
time.sleep(random.randint(1, 2))
if __name__ == '__main__':
if __name__ == "__main__":
Boss().run()
......@@ -5,24 +5,28 @@ import os
from multiprocessing.managers import BaseManager
PORT = 7481
KEY = b'AiZa5Uavcoh3PiajvaeTee5z' # keep it secret, keep it safe !
KEY = b"AiZa5Uavcoh3PiajvaeTee5z" # keep it secret, keep it safe !
class QueueManager(BaseManager):
"""This Manager holds a Queue and waits for clients to use it."""
pass
class QueueClient:
"""Base class for users of the Queue."""
def __init__(self):
QueueManager.register('get_queue')
manager = QueueManager(address=(os.environ.get('HOST', 'localhost'), PORT), authkey=KEY)
QueueManager.register("get_queue")
manager = QueueManager(
address=(os.environ.get("HOST", "localhost"), PORT), authkey=KEY
)
manager.connect()
self.queue = manager.get_queue()
if __name__ == '__main__':
if __name__ == "__main__":
queue = multiprocessing.Queue()
QueueManager.register('get_queue', callable=lambda: queue)
QueueManager(address=('', PORT), authkey=KEY).get_server().serve_forever()
QueueManager.register("get_queue", callable=lambda: queue)
QueueManager(address=("", PORT), authkey=KEY).get_server().serve_forever()
#!/usr/bin/env python3
import random
import time
from manager import QueueClient
......@@ -12,10 +11,12 @@ class Minion(QueueClient):
while True:
task = self.queue.get()
start = time.perf_counter()
print(f'start work on task {task}...')
print(f"start work on task {task}...")
result = find_prime(task)
print(f'Done ! The {task}-th prime number is {result} (found in {time.perf_counter() - start:.3f}s)')
print(
f"Done ! The {task}-th prime number is {result} (found in {time.perf_counter() - start:.3f}s)"
)
if __name__ == '__main__':
if __name__ == "__main__":
Minion().run()
......@@ -16,9 +16,9 @@ def find_prime(goal: int = 10, verbose: bool = False) -> int:
if is_prime(i):
found += 1
if verbose:
print(f'the prime number n°{found} is {i}')
print(f"the prime number n°{found} is {i}")
return i
if __name__ == '__main__':
if __name__ == "__main__":
print(find_prime(50, verbose=True))
#!/usr/bin/env python3
import numpy as np
from manager import QueueClient
from task import Task
......@@ -15,9 +13,12 @@ class Boss(QueueClient):
results = []
for _ in range(tasks):
result = self.results.get()
print(f'got result {result.identifier} of size {result.size} processed in {result.time:.3f}s')
print(
f"got result {result.identifier} of size {result.size} processed in {result.time:.3f}s"
)
results.append(result)
print('Got all {tasks} results !')
print("Got all {tasks} results !")
if __name__ == '__main__':
if __name__ == "__main__":
Boss().run()
......@@ -5,28 +5,32 @@ import os
from multiprocessing.managers import BaseManager
PORT = 7481
KEY = b'AiZa5Uavcoh3PiajvaeTee5z' # keep it secret, keep it safe !
KEY = b"AiZa5Uavcoh3PiajvaeTee5z" # keep it secret, keep it safe !
class QueueManager(BaseManager):
"""This Manager holds a Queue and waits for clients to use it."""
pass
class QueueClient:
"""Base class for users of the Queue."""
def __init__(self):
QueueManager.register('get_tasks')
QueueManager.register('get_results')
manager = QueueManager(address=(os.environ.get('HOST', 'localhost'), PORT), authkey=KEY)
QueueManager.register("get_tasks")
QueueManager.register("get_results")
manager = QueueManager(
address=(os.environ.get("HOST", "localhost"), PORT), authkey=KEY
)
manager.connect()
self.tasks = manager.get_tasks()
self.results = manager.get_results()
if __name__ == '__main__':
if __name__ == "__main__":
task_queue = multiprocessing.Queue()
result_queue = multiprocessing.Queue()
QueueManager.register('get_tasks', callable=lambda: task_queue)
QueueManager.register('get_results', callable=lambda: result_queue)
QueueManager(address=('', PORT), authkey=KEY).get_server().serve_forever()
QueueManager.register("get_tasks", callable=lambda: task_queue)
QueueManager.register("get_results", callable=lambda: result_queue)
QueueManager(address=("", PORT), authkey=KEY).get_server().serve_forever()
......@@ -7,11 +7,11 @@ class Minion(QueueClient):
def run(self):
while True:
task = self.tasks.get()
print(f'start work on a task {task.identifier} of size {task.size}...')
print(f"start work on a task {task.identifier} of size {task.size}...")
task.work()
print(f'Done in {task.time:.3f}s')
print(f"Done in {task.time:.3f}s")
self.results.put(task)
if __name__ == '__main__':
if __name__ == "__main__":
Minion().run()
......@@ -20,16 +20,20 @@ class Boss(QueueClient):
results = []
for _ in qs:
result = self.results.get()
print(f'got result {result.identifier} of processed in {result.time:.3f}s : ')
print(
f"got result {result.identifier} of processed in {result.time:.3f}s : "
)
results.append(result)
print('Got all {tasks} results !')
print("Got all {tasks} results !")
if __name__ == '__main__':
if __name__ == "__main__":
# Allocate data to be proceeded.
NDATA = 20
qs = np.array([pin.randomConfiguration(TaskParameters.robot.model) for _ in range(NDATA)])
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
......@@ -37,4 +41,4 @@ if __name__ == '__main__':
Boss().run(qs, vqs, aqs)
total = time.perf_counter() - start
print(f'Completed in {total:.3f} secs')
print(f"Completed in {total:.3f} secs")
......@@ -5,28 +5,32 @@ import os
from multiprocessing.managers import BaseManager
PORT = 7480
KEY = b'AiZa5Uavcoh3PiajvaeTee5z' # keep it secret, keep it safe !
KEY = b"AiZa5Uavcoh3PiajvaeTee5z" # keep it secret, keep it safe !
class QueueManager(BaseManager):
"""This Manager holds a Queue and waits for clients to use it."""
pass
class QueueClient:
"""Base class for users of the Queue."""
def __init__(self):
QueueManager.register('get_tasks')
QueueManager.register('get_results')
manager = QueueManager(address=(os.environ.get('HOST', 'localhost'), PORT), authkey=KEY)
QueueManager.register("get_tasks")
QueueManager.register("get_results")
manager = QueueManager(
address=(os.environ.get("HOST", "localhost"), PORT), authkey=KEY
)
manager.connect()
self.tasks = manager.get_tasks()
self.results = manager.get_results()
if __name__ == '__main__':
if __name__ == "__main__":
task_queue = multiprocessing.Queue()
result_queue = multiprocessing.Queue()
QueueManager.register('get_tasks', callable=lambda: task_queue)
QueueManager.register('get_results', callable=lambda: result_queue)
QueueManager(address=('', PORT), authkey=KEY).get_server().serve_forever()
QueueManager.register("get_tasks", callable=lambda: task_queue)
QueueManager.register("get_results", callable=lambda: result_queue)
QueueManager(address=("", PORT), authkey=KEY).get_server().serve_forever()
......@@ -7,11 +7,11 @@ class Minion(QueueClient):
def run(self):
while True:
task = self.tasks.get()
print(f'start work on a task {task.identifier}...')
print(f"start work on a task {task.identifier}...")
task.work()
print(f'Done in {task.time:.3f}s')
print(f"Done in {task.time:.3f}s")
self.results.put(task)
if __name__ == '__main__':
if __name__ == "__main__":
Minion().run()
......@@ -7,8 +7,9 @@ import example_robot_data as robex
class TaskParameters:
'''Common information to all tasks, to be allocated by each minion and the boss. '''
robotname = 'ur5'
"""Common information to all tasks, to be allocated by each minion and the boss."""
robotname = "ur5"
robot = robex.load(robotname)
......@@ -27,7 +28,13 @@ class Task:
start = time.perf_counter()
for i in range(1_000_000):
pin.rnea(TaskParameters.robot.model, TaskParameters.robot.data, self.q, self.v, self.a)
pin.rnea(
TaskParameters.robot.model,
TaskParameters.robot.data,
self.q,
self.v,
self.a,
)
self.tau[:] = TaskParameters.robot.data.tau
self.time = time.perf_counter() - start
......@@ -13,9 +13,9 @@ def grid(n_data):
Generate n_traj points from a 3d grid
"""
n_points = int(np.cbrt(n_data)) + 1
symbreak = .9586 # Use it to break the symmetry of the grid
x = np.linspace(-1., symbreak, num=n_points, endpoint=False)
y = np.linspace(-1., symbreak, num=n_points, endpoint=True)
symbreak = 0.9586 # Use it to break the symmetry of the grid
x = np.linspace(-1.0, symbreak, num=n_points, endpoint=False)
y = np.linspace(-1.0, symbreak, num=n_points, endpoint=True)
z = np.linspace(-np.pi, np.pi * symbreak, num=n_points, endpoint=True)
positions = [[a, b, c] for a in x for b in y for c in z]
......@@ -27,12 +27,12 @@ def grid(n_data):
class Boss(QueueClient):
def run(self, n_data, n_sub=100):
assert (n_data % n_sub == 0)
assert n_data % n_sub == 0
# Sample the dataset
x0s = grid(n_data)
lots = np.split(x0s, n_data // n_sub)
print(f'Choose {len(x0s)} trajectories divided in {len(lots)} lots.')
print(f"Choose {len(x0s)} trajectories divided in {len(lots)} lots.")
# create some tasks
for lot in lots:
......@@ -42,14 +42,16 @@ class Boss(QueueClient):
data = []
for _ in lots:
result = self.results.get()
print(f'got result {result.identifier} of processed in {result.time:.3f}s : ')
print(
f"got result {result.identifier} of processed in {result.time:.3f}s : "
)
data.extend(result.results)
print('Got all {tasks} results !')
print("Got all {tasks} results !")
return data
if __name__ == '__main__':
if __name__ == "__main__":
# Allocate data to be proceeded.
NDATA = 20
......@@ -60,4 +62,4 @@ if __name__ == '__main__':
data = boss.run(10, 1)
total = time.perf_counter() - start
print(f'Completed in {total:.3f} secs')
print(f"Completed in {total:.3f} secs")
......@@ -5,28 +5,32 @@ import os
from multiprocessing.managers import BaseManager
PORT = 7480
KEY = b'AiZa5Uavcoh3PiajvaeTee5z' # keep it secret, keep it safe !
KEY = b"AiZa5Uavcoh3PiajvaeTee5z" # keep it secret, keep it safe !
class QueueManager(BaseManager):
"""This Manager holds a Queue and waits for clients to use it."""
pass
class QueueClient:
"""Base class for users of the Queue."""
def __init__(self):
QueueManager.register('get_tasks')
QueueManager.register('get_results')
manager = QueueManager(address=(os.environ.get('HOST', 'localhost'), PORT), authkey=KEY)
QueueManager.register("get_tasks")
QueueManager.register("get_results")
manager = QueueManager(
address=(os.environ.get("HOST", "localhost"), PORT), authkey=KEY
)
manager.connect()
self.tasks = manager.get_tasks()
self.results = manager.get_results()
if __name__ == '__main__':
if __name__ == "__main__":
task_queue = multiprocessing.Queue()
result_queue = multiprocessing.Queue()
QueueManager.register('get_tasks', callable=lambda: task_queue)
QueueManager.register('get_results', callable=lambda: result_queue)
QueueManager(address=('', PORT), authkey=KEY).get_server().serve_forever()
QueueManager.register("get_tasks", callable=lambda: task_queue)
QueueManager.register("get_results", callable=lambda: result_queue)
QueueManager(address=("", PORT), authkey=KEY).get_server().serve_forever()
......@@ -7,11 +7,11 @@ class Minion(QueueClient):
def run(self):
while True:
task = self.tasks.get()
print(f'start work on a task {task.identifier}...')
print(f"start work on a task {task.identifier}...")
task.work()
print(f'Done in {task.time:.3f}s')
print(f"Done in {task.time:.3f}s")
self.results.put(task)
if __name__ == '__main__':
if __name__ == "__main__":
Minion().run()
......@@ -7,9 +7,9 @@ import crocoddyl
def makeDDP():
rcost_x = .1
rcost_u = .2
tcost_x = 3.
rcost_x = 0.1
rcost_u = 0.2
tcost_x = 3.0
horizon = 100
model = crocoddyl.ActionModelUnicycle()
......@@ -22,7 +22,8 @@ def makeDDP():
class TaskParameters:
'''Common information to all tasks, to be allocated by each minion and the boss. '''
"""Common information to all tasks, to be allocated by each minion and the boss."""
ddp = makeDDP()
......@@ -40,10 +41,10 @@ class Result:
class Task:
def __init__(self, x0s, identifier=None):
'''
"""
Set a task with a list of initial state. Identifier is a uniq identifier of the task (for documentation only)
that is generated randomly if none is provided.
'''
"""
self.identifier = identifier if identifier is not None else uuid.uuid1()
self.time = 0
......
#!/usr/bin/env python3
import random
import time
from manager import QueueClient
......@@ -10,9 +9,9 @@ class Boss(QueueClient):
def run(self):
for _ in range(100):
task = random.randint(5, 1e4)
print('new task:', task)
print("new task:", task)
self.queue.put(task)
if __name__ == '__main__':
if __name__ == "__main__":
Boss().run()
......@@ -5,24 +5,28 @@ import os
from multiprocessing.managers import BaseManager
PORT = 7481
KEY = b'AiZa5Uavcoh3PiajvaeTee5z' # keep it secret, keep it safe !
KEY = b"AiZa5Uavcoh3PiajvaeTee5z" # keep it secret, keep it safe !
class QueueManager(BaseManager):
"""This Manager holds a Queue and waits for clients to use it."""
pass
class QueueClient:
"""Base class for users of the Queue."""
def __init__(self):
QueueManager.register('get_queue')
manager = QueueManager(address=(os.environ.get('HOST', 'localhost'), PORT), authkey=KEY)
QueueManager.register("get_queue")
manager = QueueManager(
address=(os.environ.get("HOST", "localhost"), PORT), authkey=KEY
)
manager.connect()
self.queue = manager.get_queue()
if __name__ == '__main__':
if __name__ == "__main__":
queue = multiprocessing.Queue()
QueueManager.register('get_queue', callable=lambda: queue)
QueueManager(address=('', PORT), authkey=KEY).get_server().serve_forever()
QueueManager.register("get_queue", callable=lambda: queue)
QueueManager(address=("", PORT), authkey=KEY).get_server().serve_forever()
......@@ -5,7 +5,6 @@ minion intended to be launched by slurm
import argparse
import queue
import random
import time
from manager import QueueClient
......@@ -22,7 +21,7 @@ class Minion(QueueClient):
try:
task = self.queue.get(block=False)
except queue.Empty:
print('All work is already done !')
print("All work is already done !")
break
start = time.perf_counter()
print(f"start work {n}/{self.n_tasks} on task {task}...")
......@@ -33,6 +32,6 @@ class Minion(QueueClient):
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("n_tasks", type=int, default=1, nargs='?')
parser.add_argument("n_tasks", type=int, default=1, nargs="?")
Minion(**vars(parser.parse_args())).run()
......@@ -16,9 +16,9 @@ def find_prime(goal: int = 10, verbose: bool = False) -> int:
if is_prime(i):
found += 1
if verbose:
print(f'the prime number n°{found} is {i}')
print(f"the prime number n°{found} is {i}")
return i
if __name__ == '__main__':
if __name__ == "__main__":
print(find_prime(50, verbose=True))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment