Apuntes_Python/02_conceptos/17_multiprocessing/b_ejemplo_multiprocessing_array.py
2022-12-24 22:41:20 -03:00

42 lines
940 B
Python
Executable File

"""
Multiprocessing
crear y detener procesos
compartir datos entre proscesos
uso de 'lock' para prevenir 'race-conditions'
uso de 'queue'
administrar multiples procesos
"""
from multiprocessing import Process, Array, Lock
import time
def add_100(numeros, lock):
for i in range(100):
time.sleep(0.01)
for i in range(len(numeros)):
with lock:
numeros[i] += 1
if __name__ == "__main__":
lock = Lock()
array_compartido = Array('d', [0.0, 100.0, 200.0] ) # double
print('Arreglo al comienzo: ', array_compartido[:])
p1 = Process(target=add_100, args=(array_compartido, lock))
p2 = Process(target=add_100, args=(array_compartido, lock))
p1.start()
p2.start()
p1.join()
p2.join()
print('Arreglo al final: ', array_compartido[:])
"""
Arreglo al comienzo: [0.0, 100.0, 200.0]
Arreglo al final: [200.0, 300.0, 400.0]
"""