Apuntes_Python/02_conceptos/16_multithreading/a_ejemplos_threading.py

46 lines
907 B
Python
Raw Normal View History

2022-12-24 22:41:20 -03:00
"""
Compartiendo memoria entre hilos.
Como 'habitan' el mismo espacio de memoria, todos los
hilos tiene acceso a los mismos datos.
"""
from threading import Thread, Lock
import time
valor_db = 0
def incrementar(lock):
"""
Funcion de prueba que simula dato de bd
with lock:
...
"""
global valor_db
# lock previene el acceso a dato por otro hilo al mismo tiempo
#lock.acquire()
with lock:
copia_local = valor_db
copia_local +=1
time.sleep(0.1)
valor_db = copia_local
#lock.release()
if __name__ == "__main__":
lock = Lock()
print('Valor inicial', valor_db)
hilo1 = Thread(target=incrementar, args=(lock,))
hilo2 = Thread(target=incrementar, args=(lock,))
hilo1.start()
hilo2.start()
hilo1.join()
hilo2.join()
print('Valor final', valor_db)
print('Fin Main')