diff --git a/TP1/acquisition.py b/TP1/acquisition.py
new file mode 100644
index 0000000000000000000000000000000000000000..53fd870d84db0de4af5d0a4805ab08bd5ee7c93e
--- /dev/null
+++ b/TP1/acquisition.py
@@ -0,0 +1,25 @@
+import numpy as np
+import time
+# Une liste de mesures. Chaque imesure est un couple
+# (nom, temps d'acquisition en secondes, n valeurs).
+MESURES = [
+    ("U", 5,4),
+    ("I", 5,4),
+    ("PA", 6,4),
+    ("PR", 6,4),
+]
+
+
+def getMesure(m,t,n):
+    sigma = 0.1
+    if m=='U':
+        mu = 5
+    elif m=='I':
+        mu = 1
+    elif m=='PA':
+        mu = 2
+    elif m=='PR':
+        mu = 3
+    time.sleep(t)
+    valeurs = np.random.normal(mu, sigma, n)
+    return valeurs
\ No newline at end of file
diff --git a/TP1/clientRPC.py b/TP1/clientRPC.py
new file mode 100644
index 0000000000000000000000000000000000000000..ee223e0397b6463cb448f31b1dbcea41d9c39245
--- /dev/null
+++ b/TP1/clientRPC.py
@@ -0,0 +1,4 @@
+import rpyc
+
+conn = rpyc.connect("localhost",18861)
+print(conn.root.f(2,4))
\ No newline at end of file
diff --git a/TP1/esclave.py b/TP1/esclave.py
new file mode 100644
index 0000000000000000000000000000000000000000..098528d364d3836facf85a967d4e8910a78dc14c
--- /dev/null
+++ b/TP1/esclave.py
@@ -0,0 +1,42 @@
+import time
+import rpyc
+import numpy as np
+from acquisition import *
+
+def create_connection():
+    return rpyc.connect("localhost", 18861)
+
+
+def calcul_moyenne(id_, mesure, t, n):
+    print("Moyenne de {} est en préparation ({t}s)")
+    valeurs = getMesure(mesure,t,n)
+    moyenne = np.mean(valeurs)
+    return "Moyenne de {} est {:.2f}".format(mesure,moyenne)
+
+
+def send_result(conn, task, result):
+    # A compléter
+
+
+def ask_task(conn):
+    #A compléter
+
+
+def run(conn):
+    # `task` est un tuplet `(mesure, temps de préparation, nombre de valeurs)`.
+    task = ask_task(conn)
+
+    while task:
+        id_, mesure, t,n  = task
+
+        print("{} à calculer reçue {}".format(mesure,id_))
+        prepared_moyenne = calcul_moyenne(id_, mesure, t,n)
+
+        print(f"Moyenne de {} prête envoyée {}".format(mesure,id_))
+        send_result(conn, task, prepared_moyenne)
+
+        task = ask_task(conn)
+
+
+if __name__ == "__main__":
+    run(create_connection())
diff --git a/TP1/maitre.py b/TP1/maitre.py
new file mode 100644
index 0000000000000000000000000000000000000000..bf690ab53ea17b05be520cec772bf0fc70fd6e2e
--- /dev/null
+++ b/TP1/maitre.py
@@ -0,0 +1,27 @@
+from threading import Lock
+from rpyc.utils.server import ThreadedServer
+import rpyc
+import time
+from acquisition import MESUTRES
+tasks_to_do = [(i, *MESURES) for i, mesure in enumerate(MESURES)]
+tasks_being_done = []
+lock = Lock() # Pour protéger les listes de tâches
+start_time = None
+
+class MasterService(rpyc.Service):
+    def exposed_give_task(self):
+        global start_time
+        #A compléter
+
+        return task
+    def exposed_receive_result(self,task,result):
+        print(f"{result} reçue")
+        #A compléter
+
+
+def start():
+    server = ThreadedServer(MasterService, port=18861)
+    server.start()
+
+if __name__ == "__main__":
+    start()
diff --git a/TP1/seq.py b/TP1/seq.py
new file mode 100644
index 0000000000000000000000000000000000000000..25b80d1fd9e8de486ba518ae1aa5c11aa83f8652
--- /dev/null
+++ b/TP1/seq.py
@@ -0,0 +1,21 @@
+import time
+from random import shuffle
+from acquisition import *
+import numpy as np
+
+def moyennes_mesures(mesures):
+    moyennes = {}
+    for mesure,t,n in mesures:
+        print("Collecte de {} valeurs de {} toutes les ({}s)...".format(n,mesure,t))
+        valeurs = getMesure(mesure,t,n)
+        moyenne = np.mean(valeurs)
+        print("Moyenne de {} est {:.2f}".format(mesure,moyenne))
+
+
+if __name__ == "__main__":
+    shuffle(MESURES)
+    print(MESURES)
+    start_time = time.time()
+    moyennes_mesures(MESURES)
+    end_time = time.time()
+    print("Temps de calcul: {:.1f}s".format(end_time - start_time))
diff --git a/TP1/serveurRPC.py b/TP1/serveurRPC.py
new file mode 100644
index 0000000000000000000000000000000000000000..26dd37f0d6b426d674ebd28d8e3965bfe57ebeb7
--- /dev/null
+++ b/TP1/serveurRPC.py
@@ -0,0 +1,15 @@
+import rpyc
+from rpyc.utils.server import ThreadedServer
+
+
+class MyService(rpyc.Service):
+    def exposed_f(self,x,y):
+        return x+y
+    def g(self):
+        return 43
+def start():
+    t = ThreadedServer(MyService, port=18861)
+    t.start()
+
+if __name__ == "__main__":
+    start()