19インチ生産者と消費者とキュースレッド爬虫類

輸入スレッド
輸入ランダム
読み込み時間

gMoney = 1000 
グロック= threading.Lock()
gTotalTimes = 10 
gTimes = 0 


クラスのプロデューサー(threading.Thread):
    デフ実行します(自己):
        グローバルgMoney 
        グローバルgTimes 
        真しばらく:
            お金= random.randint(100 、1000)
            gLock.acquire()
            の場合gTimes> = gTotalTimes:
                gLock.release()
                ブレイク
            gMoney + =お金の
            印刷( '%sの生产了%D元钱、剩余%D元钱' %(threading.current_thread()、お金、gMoney))
            gTimes + = 1 
            gLock.release() 
            time.sleep(0.5)

 
(threading.Threadの)クラスの消費者:
    DEF RUN(セルフ):
        グローバルgMoney 
        しばらく真:
            マネーrandom.randint =(100,1000)
            gLock.acquire()
            IF gMoney> =マネー:
                gMoney - =マネー
                印刷( '個人消費の%sの%dのドル、残りドル%D' %(threading.current_thread()、マネー、gMoney))
            他:
                gTimes> = gTotalTimes IF:
                    gLock.release()
                    BREAKの
                印刷( ' %sの%D未満!「%(threading.current_thread()、マネー、gMoney))残り%dのドルを消費する準備ができて、消費者のドル
            gLock.release()
            time.sleep(0.5)


メインDEF(): 
    。Xの範囲内(3) :
        T =コンシューマ(NAME = 'Dコンシューマスレッド%' %X)
        t.start()

    のためのX範囲(5):
        T =プロデューサー(名= "プロデューサスレッド%D" %のX)
        t.start()

IF __name__ == '__main__':
    メイン()

  

 

キューインポートキューから
インポート通し
インポート時間
DEF試験():

    Q =キュー(4)
    の範囲内のiについて(4):
        q.put(I)

    の範囲内のiについて(4):
        プリント(q.get())
    印刷(q.full())
    プリント(q.empty())
    プリント(q.qsize())

DEF SET_VALUE(Q):
    インデックス= 0 
    一方TRUE:
        q.put(インデックス)
        指数+ = 1 
        time.sleep(1)

(Q)DEF GET_VALUE:
    しばらくTRUE:
        プリント(q.get())

DEFメイン():
    Q =キュー(4)
    T1 = threading.Thread(目標= SET_VALUE、引数= [Q])
    T2 = threading.Thread(ターゲット= GET_VALUE、引数= [Q])

    t1.start()
    t2.start()

の場合__name__ == '__main__':
    メイン()

  

おすすめ

転載: www.cnblogs.com/wcyMiracle/p/12500007.html