Réptil 19- produtores e consumidores e o histórico da fila

importação de threading 
importação aleatória 
tempo de importação 

gMoney = 1000 
Glock = threading.Lock () 
gTotalTimes = 10 
gTimes = 0 


class Produtor (threading.Thread): 
    def execute (self): 
        gMoney mundial 
        gTimes globais 
        while True: 
            dinheiro = random.randint (100 , 1000) 
            gLock.acquire () 
            se gTimes> = gTotalTimes: 
                gLock.release () 
                quebrar 
            gMoney + = dinheiro 
            print ( '% s生产了% d元钱,剩余% d元钱' % (threading.current_thread (), dinheiro, gMoney)) 
            gTimes + = 1 
            gLock.release () 
            time.sleep (0,5)

 
classe do Consumidor (da threading.Thread): 
    DEF RUN (Self): 
        global gMoney 
        o while True: 
            Dinheiro do random.randint = (100,1000) 
            gLock.acquire () 
            IF gMoney> = Dinheiro: 
                gMoney - = Dinheiro 
                imprimir ( '% s% d dólares de gastos do consumidor, os dólares restantes% d' % (threading.current_thread (), Money, gMoney)) 
            else: 
                IF gTimes> = gTotalTimes: 
                    gLock.release () 
                    INTERVALO 
                impressão ( ' % s% d dólares de consumidores prontos a consumir os restantes% d dólares, menos do que! '% (threading.current_thread (), Money, gMoney)) 
            gLock.release () 
            o time.sleep (0,5)


principal DEF (): 
    . para X no intervalo (3) :
        t = Consumidor (name = 'linha D do consumidor%' % X) 
        t.start () 

    para X no intervalo (5).: 
        T = Produtor (name = "thread produtor D%" X%) 
        t.start () 

o __name__ == IF '__main__': 
    main ()

  

 

da fila de importação da fila 
de importação rosqueamento 
importação tempo 
teste def (): 

    q = Fila (4) 
    para i no intervalo (4): 
        q.put (i) 

    para i no intervalo (4): 
        de impressão (q.get ()) 
    de impressão (q.full ()) 
    de impressão (q.empty ()) 
    de impressão (q.qsize ()) 

def set_value (q): 
    índice = 0 
    while True: 
        q.put (índice) 
        índice de + 1 = 
        time.sleep (1) 

def get_value (q): 
    enquanto Verdadeiro: 
        impressão (q.get ()) 

def principal (): 
    q = Fila (4) 
    t1 = threading.Thread (alvo = set_value, args = [q]) 
    t2 = threading.Thread ( alvo = get_value, args = [q])

    t1.start () 
    t2.start () 

se __name__ == '__main__': 
    main ()

  

Acho que você gosta

Origin www.cnblogs.com/wcyMiracle/p/12500007.html
Recomendado
Clasificación