python_multiprocessing
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
python_multiprocessing [2022/06/15 11:55] – [Multiprocess dans kivy] serge | python_multiprocessing [2022/06/21 13:42] (Version actuelle) – [Mon exemple à moi archi simple] serge | ||
---|---|---|---|
Ligne 140: | Ligne 140: | ||
* **[[https:// | * **[[https:// | ||
+ | ====Mon exemple à moi archi simple==== | ||
+ | **Je n'ai pas besoin de montrer que je suis très fort pour me faire embaucher chez GAFAM.** | ||
+ | |||
+ | <code python> | ||
+ | from time import time, sleep | ||
+ | import random | ||
+ | from multiprocessing import Process | ||
+ | from multiprocessing.sharedctypes import Value | ||
+ | |||
+ | class SharedMemory: | ||
+ | def __init__(self): | ||
+ | self.val = Value(" | ||
+ | print(self.val, | ||
+ | my_proc = Process(target=another_process, | ||
+ | my_proc.start() | ||
+ | |||
+ | def shared_memory_master(self): | ||
+ | t = time() | ||
+ | while time() - t < 4: | ||
+ | print(f" | ||
+ | sleep(0.1) | ||
+ | |||
+ | def another_process(val): | ||
+ | t = time() | ||
+ | while time() - t < 3: | ||
+ | n = random.randint(-1000, | ||
+ | print(f" | ||
+ | val.value = n | ||
+ | sleep(0.3) | ||
+ | |||
+ | if __name__ == " | ||
+ | sh = SharedMemory() | ||
+ | sh.shared_memory_master() | ||
+ | </ | ||
====Exemple d' | ====Exemple d' | ||
Ligne 180: | Ligne 214: | ||
</ | </ | ||
+ | ====Exemple de partage de numpy array==== | ||
+ | <code python> | ||
+ | from multiprocessing import Process | ||
+ | from multiprocessing.managers import SharedMemoryManager | ||
+ | from multiprocessing.shared_memory import SharedMemory | ||
+ | import numpy as np | ||
+ | |||
+ | def test(shared_mem: | ||
+ | a = np.frombuffer(shared_mem.buf, | ||
+ | a[0] = -a[0] | ||
+ | |||
+ | |||
+ | if __name__ == " | ||
+ | # Create the array | ||
+ | N = int(10) | ||
+ | unshared_arr = np.random.rand(N) | ||
+ | DTYPE = unshared_arr.dtype | ||
+ | with SharedMemoryManager() as smm: | ||
+ | shared_mem = smm.SharedMemory(size=unshared_arr.nbytes) | ||
+ | arr = np.frombuffer(shared_mem.buf, | ||
+ | arr[:] = unshared_arr | ||
+ | print(" | ||
+ | |||
+ | # Create, start, and finish the child processes | ||
+ | p = Process(target=test, | ||
+ | p.start() | ||
+ | p.join() | ||
+ | |||
+ | # Printing out the changed values | ||
+ | print(" | ||
+ | </ | ||
{{tag> kivy python sb }} | {{tag> kivy python sb }} |
python_multiprocessing.1655294124.txt.gz · Dernière modification : 2022/06/15 11:55 de serge