41 lines
843 B
Python
41 lines
843 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, Value, Lock
|
||
|
import time
|
||
|
|
||
|
def add_100(numero, lock):
|
||
|
for i in range(100):
|
||
|
time.sleep(0.01)
|
||
|
with lock:
|
||
|
numero.value += 1
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
|
||
|
lock = Lock()
|
||
|
|
||
|
nro_compartido = Value('i', 0)
|
||
|
print('el número al comienzo es', nro_compartido.value)
|
||
|
|
||
|
p1 = Process(target=add_100, args=(nro_compartido, lock))
|
||
|
p2 = Process(target=add_100, args=(nro_compartido, lock))
|
||
|
|
||
|
p1.start()
|
||
|
p2.start()
|
||
|
|
||
|
p1.join()
|
||
|
p2.join()
|
||
|
|
||
|
print('el número al final es', nro_compartido.value)
|
||
|
|
||
|
"""
|
||
|
el número al comienzo es 0
|
||
|
el número al final es 200
|
||
|
"""
|