Revisão multiencadeada 2

1. Bloqueio global O GIL 
    possui um e apenas um encadeamento em execução em um determinado momento - > o encadeamento é mais seguro 2. A complexidade do encadeamento é
 maior, geralmente não é recomendado o uso
 3. Usado no pool de encadeamentos do banco de dados, no pool de conexão do banco de dados,
 4 . não use um monte de tópicos, modificar um pouco mais difícil 
mlock = threading.Lock ()
 5 . mutex 
    bloqueio Adquirir 
        mlock.acquire () 
    para liberar o desbloqueio 
        mlock.release () 
    depois de desbloqueio, o lançamento não ocorrerá impasse 
    tais como: abrir um ficheiro não quer que os outros para modificar
 6. o mlock = threading.RLock () 
    quando o bloqueio, o bloqueio de reutilização prevenção de impasse, uma pluralidade de bloquear e libertar a fechadura pode ser usado da mesma função de 

programa: 
# teste , Thread thread 
import import threading 

num = 0 
 def t ():
     globalNUM 
    NUM . + = 1
     impressão (NUM)
 para I no Intervalo (0,6 ): 
    D = do threading.Thread (alvo = T) 
    d.start () 
    # podem ser sequencialmente saída 


importação de Threading 
 importação Tempo 

DEF func_A ():
     impressão ( " a function start " ) 
    time.sleep ( 2 )
     print ( " a function end " ) 

def func_b ():
     print ( " b function start " )
    o time.sleep ( 2 )
     Impressão ( " função termina b " ) 

B Tempo = time.time () 
func_A () 
func_B () 
Imprimir (time.time () - B Time)
 # Ver o número de segundos para executar 

Import Enfiar 

_a = threading.Thread ( = alvo func_A) 
_B = threading.Thread (target = func_B) 
_a.start () 
_b.start () 
# começar 
_a.join () 
_b.join () 
# espera 
de impressão (time.time () - B Time)
 # Ver Horário 

# bloquear e liberar
Import encadeamento de
mlock = threading.Lock ()
 # criar um bloqueio, nome mlock 
# mlock = threading.RLock () 
# quando há um impasse, prevenção impasse reutilizável bloqueio 
NUM = 0 
 DEF A ():
     , Ltd. Livre Aderir NUM 
    mlock.acquire ( ) 
    # bloqueio 
    NUM = + 1.  
    mlock.release () 
    # bloqueio libertação 
    impressão (NUM)
 para I em Gama (10 ): 
    D = do threading.Thread (alvo = a) 
    d.start ()

2020-04-12

Acho que você gosta

Origin www.cnblogs.com/hany-postq473111315/p/12686171.html
Recomendado
Clasificación