46 lines
907 B
Python
46 lines
907 B
Python
|
"""
|
||
|
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')
|