Tópico -LOCK bloqueio

de enfiar Tópico importação, Bloqueio 
tempo de importação
a = 10
b = 10
lock = Lock ()
def fun ():
# lock.acquire ()
a global
b mundial
a + = 1
time.sleep (1)
b + = 1
# lock.release ()
print ( "- a {} - b {} ->" formato (a, b).)

se __name __ == "__ main__":
start = time.time ()
l = []
for i in range ( 10):
t = thread (target = diversão)
l.append (t)
t.start ()
for i in l:
i.join ()
end = time.time ()
print ( "end ------- -", de ponta começar, a, b)

-A20 - b11 -> - a20 - b12 ->
-A20 - b13 ->

-A20 - b14 -> - a20 - b15 ->

-A20 - b16 ->
-A20 - b17 ->
-A20 - b18 ->
-A20 - b19 ->
-A20 - b20 ->
final -------- 1,003110408782959 20 20

Como os dados são compartilhados entre threads, vários segmentos co-operação de um objeto poderia causar resultados inesperados.

Se lock.acquire (), lock.release () descomentada

Os resultados são como se segue

-A11 - b11 -> 
-A12 - b12 -> 
-A13 - b13 -> 
-a14 - b14 -> 
-A15 - b15 -> 
-a16 - b16 -> 
-a17 --b17 -> 
-a18 - b18 -> 
-a19 - b19 -> 
-A20 - b20 -> 
final -------- 10,004825592041016  20  20

Os resultados, como esperado, mas pelo tempo que os 1s 10s torna-se

Acho que você gosta

Origin www.cnblogs.com/pfeiliu/p/12543644.html
Recomendado
Clasificación