Pythonのスレッドのスレッド/ミューテックス/デッドロック/ GILロック

輸入糸パッケージ

輸入スレッド

レディスレッド機能、パラメータを渡します

T1 = threading.Thread(目標= FUNC、引数の=(引数))

クラス継承スレッド、スレッドオブジェクトが作成されます

クラスMyThread(threading.Thread)
     デフ(自己)を実行します。
         渡す

場合 __name__ == " __main__ " 
    T = MyThread()
    t.startを()

スレッドは完全に変数共有しますが、共有グローバル変数データエラーが発生する問題に
ロッククラスthreadingモジュールを使用して、問題のスレッドがグローバル変数を共有解決することができますミューテックスを追加します

ロック作成 
ミューテックスを= threading.Lock() 

は、ロックされた
mutex.acquireを() 

リリースロックを 
mutex.release()

ミューテックスは、デッドロックにつながる可能性が
二つのスレッドそれぞれがリソースの部分を占めている場合、時間の複数のスレッド間で共有リソースを、そしてお互いのリソースを待っていると同時に、デッドロックが発生します。
解決策:
1.銀行家のアルゴリズム:プログラミング時間と空間の関係をロックし、解放するためには良い時間のような
2タイムアウト待ちを追加します。

PythonのグローバルインタープリタロックGILマルチスレッドでは 
GILは、PythonインタプリタのC言語バージョンの遺産である
GILロックが一つだけのスレッドで実行が存在し、同じ時間でのpythonになります
が、マルチスレッドまたはシングルスレッドの高速閉じたが、結局、これはスレッドですIOの期間を遮断する、他のスレッドが実行できる
GILロックとmutexを同じではありません、GILロックがスレッド、トランザクション内のスレッドのミューテックスのロックをロックされて、ミューテックスが開発者自身によって書かれ、GILロックPythonのインタープリタのCバージョンのソース

GIL解決するための手段
1 PythonのJavaインタプリタのバージョン
2.他の言語コード、この部分が完了したことを

おすすめ

転載: www.cnblogs.com/xixu/p/11220724.html
おすすめ