Python線程鎖如何完成模塊建設
Python線程鎖需要我們不斷的學習相關技術,其實在有些時候我們在不斷的學習中也能尋找出問題解決的方案。多線程是程序設計中的一個重要方面,尤其是在服務器Deamon程序方面。無論何種系統,線程調度的開銷都比傳統的進程要快得多。
Python可以方便地支持多線程。可以快速創建線程、互斥鎖、信號量等等元素,支持線程讀寫同步互斥。美中不足的是,Python的運行在Python虛擬機上,創建的多線程可能是虛擬的線程,需要由Python虛擬機來輪詢調度,這大大降低了Python多線程的可用性。希望高版本的Python可以解決這個問題,發揮多CPU的***效率。
網上有些朋友說要獲得真正多CPU的好處,有兩種方法:
1.可以創建多個進程而不是線程,進程數和cpu一樣多。
2.使用Jython 或 IronPython,可以得到真正的多線程。
Python線程鎖創建
使用threading模塊的 Thread類,類接口如下
- class Thread( group=None, target=None, name=None,
args=(), kwargs={})
需要關注的參數是target和args. target 是需要子線程運行的目標函數,args是函數的參數,以tuple的形式傳遞。
以下代碼創建一個指向函數worker 的子線程
- def worker(a_tid,a_account):
- ...
- th = threading.Thread(target=worker,args=(i,acc) ) ;
啟動Python線程鎖
- th.start()
等待線程返回threading.Thread.join(th)或者th.join()
如果你可以對要處理的數據進行很好的劃分,而且線程之間無須通信,那么你可以使用:創建=》運行=》回收的方式編寫你的多線程程序。但是如果線程之間需要訪問共同的對象,則需要引入互斥鎖或者信號量對資源進行互斥訪問。
下面講講如何創建互斥鎖,創建鎖
- g_mutex = threading.Lock()
- ....
使用Python線程鎖
- for ... :
- #鎖定,從下一句代碼到釋放前互斥訪問
- g_mutex.acquire()
- a_account.deposite(1)
- #釋放
- g_mutex.release()
以上就是對Python線程鎖的系統介紹希望大家有所收獲。
【編輯推薦】