python_並行プログラミング - マルチスレッド2

1.ミューテックス

インポートからスレッド輸入スレッド、ロック

デフはfunc1(ロック):
     グローバルn個
    lock.acquire()  ロック 
    TEMP = N-
    time.sleep( 0.2 
    N- = TEMP -1 
    lock.release()  ロック解除

N- = 10 
t_list = []
ロックは = ロック()
 のために範囲(10 ):
    T1 =スレッド(目標=関数func1、引数= (ロック))
    t1.start()
    t_list.append(T1)
以下のためのt_list:
    参加する()
プリント(N)

結果:  実行速度を犠牲にしますが、データのセキュリティを確保します。

 

 2.再帰的ロック

スレッド輸入糸、RLOCK

デフはfunc1(名):
    lock1.acquire()
    印刷' {}最初のキーを取得する!' .format(名前))
    lock2.acquire()
    印刷' 2番目のキーを取得するには、{}!' .format(名))
     を印刷' {}が部屋入った' .format(名前を))
    lock2.release() 第2のキーの戻り 
    lock1.release() 最初のキー戻り

LOCK1 = RLOCK()   ロックを1 
LOCK2 = RLOCK()    #1 ロック2

 I における範囲(10 ):
    スレッド(ターゲット =関数func1、引数=(I))。)(スタート

結果:  彼らはコードを実行する前に取得するために同じ時間が必要で、2つのキーが、2つの異なるスレッドを起こしやすい、各スレッドごとにキーを取得すると、デッドロックがあるだろう、すべての再帰的なロックがこの問題を解決することができます問題。

おすすめ

転載: www.cnblogs.com/wangdianchao/p/12115939.html