python 多線程共享全局變量的問題


  多線程都是在同一個進程中運行的因此在進程中的全局變量所有線程都是可共享的。

  這就造成了一個問題,因為線程執行的順序是無序的。有可能會造成數據錯誤。

直白理解:也就是多線程執行的時候,同時對一個全局變量進行操作(例如同時進行賦值操作,並且賦值還不同),就可能出現數據錯誤.

 

import threading

VALUE = 0


def add_value():
    global VALUE  # 全局變量在函數體中使用的時候,需要申明
    for x in range(1000):
        VALUE += 1
    print('value: %d' % VALUE)


def main():
    for x in range(2):
        t = threading.Thread(target=add_value)
        t.start()


if __name__ == '__main__':
    main()

 

兩個線程都是對全局變量VALUE進行加1運算,在同一進程中兩個線程進行的VALUE加1運算同時執行時就會出錯.

在上面程序中VALUE加1執行的次數較少時,出現同時執行的情況一般不會出現,但是,當執行次數較多時(1000000次),

就會出現同時進行VALUE加1運算,從而造成全局變量VALUE數據出錯.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM