proceso de bloqueo _

# Compartir datos, disco duro (archivos), de bloqueo - no se recomienda 
a partir de multiprocesamiento Importación Proceso, Bloqueo
 de importación tiempo, JSON, Random
 Importación OS
 DEF Buscar (): 
    DIC = la json.load (Open ( ' db.txt ' ))
     Imprimir ( ' % restante votos S S% ' % (os.getpid (), DIC [ ' COUNT ' ])) 

DEF GET (): 
    DIC = la json.load (Open ( ' db.txt ' )) 
    el time.sleep ( 0,1) # lectura analógica a la red de datos de latencia 
    SI DIC [ ' COUNT' ]> 0: 
        DIC [ ' COUNT '] - = 1 
        el time.sleep ( 0.2) # red analógica retrasar los datos de escritura 
        El json.dump (DIC, Open ( ' db.txt ' ' W ' ))
         Imprimir ( ' % s éxito de compra ' % os.getpid ()) 

DEF Tarea (Bloqueo): 
    Buscar () 
    lock.acquire () 
    get () 
    lock.release () 
SI  el __name__ == ' __main__ ' : 
    bloqueo = bloqueo ()
     paraYo en Rango (10): # simulan concurrentes cliente 100 votos de agarre 
        P = Proceso (target = Tarea, args = (Lock,)) 
        p.start ()
# 共享数据,内存Manager, Lock -不推荐
de multiprocesamiento importación de Procesos, Gerente de bloqueo 

# tarea def (DIC, bloqueo): 
#      lock.acquire () 
#      DIC [ "count"] - = 1 
#      lock.release ( ) 
    
def tarea (DIC, bloqueo): 
    con cerradura: 
        DIC [ " contar " ] - = 1 si __name__ == " __main__ " : 
    bloqueo = bloqueo () 
    m = Manager () 
    dict = m.dict ({ " cuentan " : 100 })
    

 
    p_list = []
     para i en gama (100 ): 
        p = Proceso (target = tarea, args = (dict, bloqueo)) 
        p_list.append (p) 
        p.start () 
    para p en p_list: 
        p.join) ( 
    impresión (dict)
    

 

Supongo que te gusta

Origin www.cnblogs.com/hapyygril/p/12589717.html
Recomendado
Clasificación