標籤:完整 總結 function content number post log 實參 ash
多線程-共用全域變數
from threading import Threadimport timeg_num = 100def 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 Threadimport timedef 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開發人員交流平台 】
一起學Python:多線程-共用全域變數