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の真値。