一起學Python:多線程-共用全域變數

來源:互聯網
上載者:User

標籤:完整   總結   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:多線程-共用全域變數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.