filetage d'importation importation aléatoire temps d'importation Gmoney = 1000 Glock = threading.Lock () gTotalTimes = 10 gTimes = 0 classe Producteur (threading.Thread): def exécuter (self): mondiale Gmoney gTimes mondiaux while True: argent = random.randint (100,1000) gLock.acquire () si gTimes> = gTotalTimes: gLock.release () Pause Gmoney + = argent print ( '% s% d dollars de la production, les dollars restants% d' % (threading.current_thread (), argent, Gmoney)) gTimes + = 1 gLock.release () time.sleep (0,5) classe des consommateurs (threading.Thread): def exécuter (self): mondiale Gmoney while True: argent = random.randint (100,1000) gLock.acquire () si Gmoney> = argent: Gmoney - = argent print ( '% s% d dollars des dépenses de consommation, les dollars restants% d' % (threading.current_thread (), argent, Gmoney)) autre: si gTimes> = gTotalTimes: gLock.release () Pause print ( '% s% d dollars des consommateurs prêts à consommer les dollars restants% d, moins!% (threading.current_thread (), argent, Gmoney)) gLock.release () time.sleep (0,5) def main (): pour x dans la fourchette (3): t = consommation (nom 'thread consommateur% d' = x%) t.start () pour x dans la fourchette (5): t = Producteur (name = "thread producteur% d" % x) t.start () si __name__ == '__main__': principale()
File d'attente de la file d'importation filetage d'importation temps d'importation essai def (): q = File d'attente (4) pour i dans la plage (4): q.put (i) pour i dans la plage (4): impression (q.get ()) impression (q.full ()) impression (q.empty ()) impression (q.qsize ()) def set_value (q): indice = 0 while True: q.put (index) index + = 1 time.sleep (1) def get_value (q): while True: impression (q.get ()) def main (): q = File d'attente (4) t1 = threading.Thread (target = set_value, args = [q]) t2 = threading.Thread (target = get_value, args = [q]) t1.start () t2.start () si __name__ == '__main__': principale()