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 ()