1. 程式人生 > 實用技巧 >【Python高階程式設計015 ● 多工程式設計 ● 解決執行緒之間共享全域性變量出現錯誤的方法:執行緒同步】

【Python高階程式設計015 ● 多工程式設計 ● 解決執行緒之間共享全域性變量出現錯誤的方法:執行緒同步】


---------Python基礎程式設計---------

Author : AI菌


【內容講解】

執行緒之間共享全域性變數資料出現錯誤問題

【程式碼演示】

"""
執行緒之間共享全域性變數資料出現錯誤問題
"""

# 定義兩個函式,實現迴圈100萬次,每迴圈一次給全域性變數加1
# 建立兩個子執行緒執行對應的兩個函式,檢視計算後的結果
# 如果計算過程不出錯,兩個子執行緒執行完畢,全域性變數的值應該是100萬

import threading

# 定義全域性變數
g_num = 0


# 迴圈1000000次,每迴圈一次給全域性變數加1
def calc_num1():
    # 宣告此處加上global表示要修改全域性變數的記憶體地址
    global g_num
    for i in range(1000000):
        g_num += 1

    print("calc_num1:", g_num)


# 迴圈1000000次,每迴圈一次給全域性變數加1
def calc_num2():
    # 宣告此處加上global表示要修改全域性變數的記憶體地址
    global g_num
    for i in range(1000000):
        g_num += 1

    print("calc_num2:", g_num)


if __name__ == '__main__':
    # 建立第一個子執行緒
    first_thread = threading.Thread(target=calc_num1)
    # 建立第二個子執行緒
    second_thread = threading.Thread(target=calc_num2)

    # 啟動執行緒執行任務
    first_thread.start()
    second_thread.start()

【執行結果】

calc_num1: 1012896
calc_num2: 1147387

【往期精彩】

▷【Python基礎程式設計196 ● 讀取檔案的4種方式】
▷【Python基礎程式設計197 ● 讀取檔案的4種方式】
▷【Python基礎程式設計198 ● 讀取檔案的4種方式】
▷【Python基礎程式設計199 ● Python怎麼讀/寫很大的檔案】
▷【Python基礎程式設計200 ● 讀取檔案的4種方式】
▷【Python基礎程式設計201 ● 讀取檔案的4種方式】
▷【Python基礎程式設計202 ● 讀取檔案的4種方式】
▷【Python基礎程式設計203 ● 讀取檔案的4種方式】

【加群交流】