7.Pythonネットワークプログラミング_複数のスレッドがグローバル変数の問題を共有します

   Pythonの操作を共有するサポートグローバル変数をマルチスレッド、それは多くの問題、理論的には、グローバル変数の値が2,000,000をする必要があり、実装後g_numプログラム、初めて目を持っていますが、実際の運用では、結果が少ない理論値よりもあります

1  インポートスレッディング
 2  インポート時間
 。3  
。4  #は、グローバル変数を定義する
5。 g_num = 0
 6。 
7。 DEFのTEST1(NUM):
 8      グローバルg_num
 。9      ための I における(NUM)範囲:
 10          。g_num + = 1
 。11      プリント" ----でD =%---- g_num TEST1 %のg_num)
 12は 
13である DEF TEST2(NUM):
 14      グローバルg_num
 15      のための I における(NUM範囲)
16          g_num + = 1。
 17。     プリント" ---- g_numでTEST2 =%D ---- "%のg_num)
 18である     
19。 DEF メイン():
 20である      threading.ThreadのT1 =(目標= TEST1、引数=(1000000 ) )
 21は      threading.ThreadのT2 =(目標= TEST2、引数=(1000000 ))
 22である     (t1.start)
 23である     (t2.start)
 24      #の二つのスレッド完成上記待機.... 
25      (time.sleep 5 26で     印刷" スレッド主g_num%のD = ----で---- "%のg_num)
 27      
28      
29 IF  __name__ == " __main__ " 30      main()の
 31      理論的には2百万円(1000000 + 1000000)出力を持続させるべき
32      実際には少ない200万より

 

   プログラム2つのスレッドがメイン文が実際に実行されるコンピュータ内部g_num + = 1、プロセスであり、この文は、複数のアセンブラに依拠する文とCなどの工程(++の数を指し、グローバル変数の関数を変更しました翻訳への声明)、マルチスレッドのプログラム実行の過程で、スレッド1の実行は、ちょうど第2工程を終了したことがあります。右のスレッド2与えられたプログラムを実行するために、この瞬間に、コンピュータのCPUを1の値を取得するので、プログラムの執行力の単純な転送、その結果、グローバル変数にマルチスレッドプログラムの主な問題であり、理論値未満グローバル変数g_num 1の真値。

 

 

 

おすすめ

転載: www.cnblogs.com/NiBosS/p/11963075.html