多線程中鎖的概念python,多線程概念python

來源:互聯網
上載者:User

多線程中鎖的概念python,多線程概念python

多線程中鎖的概念python

好幾個人問我給資源加鎖是怎麼回事,其實並不是給資源加鎖, 而是用鎖去鎖定資源,你可以定義多個鎖, 像下面的代碼, 當你需要獨佔某一資源時,任何一個鎖都可以鎖這個資源

就好比你用不同的鎖都可以把相同的一個門鎖住是一個道理

 

#coding: utf-8import  threading  import  time     counter = 0counter_lock = threading.Lock() #只是定義一個鎖,並不是給資源加鎖,你可以定義多個鎖,像下兩行代碼,當你需要佔用這個資源時,任何一個鎖都可以鎖這個資源counter_lock2 = threading.Lock() counter_lock3 = threading.Lock()#可以使用上邊三個鎖的任何一個來鎖定資源 class  MyThread(threading.Thread):#使用類定義thread,繼承threading.Thread     def  __init__(self,name):          threading.Thread.__init__(self)          self.name = "Thread-" + str(name)     def run(self):   #run函數必須實現         global counter,counter_lock #多線程是共用資源的,使用全域變數         time.sleep(1);           if counter_lock.acquire(): #當需要獨佔counter資源時,必須先鎖定,這個鎖可以是任意的一個鎖,可以使用上邊定義的3個鎖中的任意一個            counter += 1               print "I am %s, set counter:%s"  % (self.name,counter)              counter_lock.release() #使用完counter資源必須要將這個鎖開啟,讓其他線程使用            if  __name__ ==  "__main__":      for i in xrange(1,101):          my_thread = MyThread(i)        my_thread.start()



 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.