一起學Python:多線程-共享全局變量


多線程-共享全局變量


from threading import Thread import time g_num = 100 def work1(): global g_num for i in range(3): g_num += 1 print("----in work1, g_num is %d---"%g_num) def work2(): global g_num print("----in work2, g_num is %d---"%g_num) print("---線程創建之前g_num is %d---"%g_num) t1 = Thread(target=work1) t1.start() #延時一會,保證t1線程中的事情做完 time.sleep(1) t2 = Thread(target=work2) t2.start() 

運行結果:

---線程創建之前g_num is 100--- ----in work1, g_num is 103--- ----in work2, g_num is 103--- 

列表當做實參傳遞到線程中

from threading import Thread import time def work1(nums): nums.append(44) print("----in work1---",nums) def work2(nums): #延時一會,保證t1線程中的事情做完 time.sleep(1) print("----in work2---",nums) g_nums = [11,22,33] t1 = Thread(target=work1, args=(g_nums,)) t1.start() t2 = Thread(target=work2, args=(g_nums,)) t2.start() 

運行結果:

----in work1--- [11, 22, 33, 44] ----in work2--- [11, 22, 33, 44] 

總結:

在一個進程內的所有線程共享全局變量,很方便在多個線程間共享數據
缺點就是,線程是對全局變量隨意遂改可能造成多線程之間對全局變量的混亂(即線程非安全)

 

==================================================================

注:以上課程筆記為學習時整理的老師課堂學習筆記,如需轉載,如需完整筆記,請私聊聯系我。

專題Python每天更新我的學習筆記。以上內容整理與上課筆記,更多詳情查看原文鏈接,我的公眾號干貨持續更新中

原文鏈接:文章Python開發者交流平台

如果你有更好的心得和建議,歡迎拍磚一起探討。歡迎搜索公眾號加入【 python開發者交流平台 】


 


免責聲明!

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



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