42 lines
940 B
Python
42 lines
940 B
Python
|
"""
|
||
|
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]
|
||
|
"""
|