Python實現(xiàn)的多線程同步與互斥鎖功能示例
本文實例講述了Python實現(xiàn)的多線程同步與互斥鎖功能。分享給大家供大家參考,具體如下:
#! /usr/bin/env python #coding=utf-8 import threading import time ''' #1、不加鎖 num = 0 class MyThread(threading.Thread): def run(self): global num time.sleep(1) #一定要sleep?。?! num = num + 1 msg = self.name + ' num is ---- ' + str(num) print msg def test(): for i in range(10): s = MyThread() #實例化一個Thread對象,每個Thread對象代表著一個線程 s.start() #通過start()方法,開始線程活動 ''' #''' class MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg = self.name+' @ '+str(i) print msg def test(): for i in range(5): t = MyThread() t.start() #''' ''' #2、加鎖 num = 0 #多個線程共享操作的數(shù)據(jù) mu = threading.Lock() #創(chuàng)建一個鎖 class MyThread(threading.Thread): def run(self): global num time.sleep(1) if mu.acquire(True): #獲取鎖狀態(tài),一個線程有鎖時,別的線程只能在外面等著 num = num + 1 msg = self.name + ' num is ---- ' + str(num) print msg mu.release() #釋放鎖 def test(): for i in range(10): s = MyThread() s.start() ''' if __name__ == '__main__': test()
運行結果:
再分別運行注釋中的每一部分代碼:
1. 不加鎖:
2. 加鎖:
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結》、《Python Socket編程技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python中關于py文件之間相互import的問題及解決方法
這篇文章主要介紹了python中關于py文件之間相互import的問題,本文用一個例子演示下如何解決python中循環(huán)引用的問題,需要的朋友可以參考下2022-02-02Python3中延時變量和 free_list鏈表的區(qū)別解析
這篇文章主要介紹了Python3中延時變量和 free_list鏈表的區(qū)別,在Python3中,"延時變量" 和 "free_list鏈表" 是兩個不同的概念,他們之間沒有直接聯(lián)系,本文給實例相結合給大家講解的非常詳細,需要的朋友可以參考下2023-04-04python連接mysql數(shù)據(jù)庫示例(做增刪改操作)
python連接mysql數(shù)據(jù)庫示例,提供創(chuàng)建表,刪除表,數(shù)據(jù)增、刪、改,批量插入操作,大家參考使用吧2013-12-12利用django創(chuàng)建一個簡易的博客網站的示例
這篇文章主要介紹了利用django創(chuàng)建一個簡易的博客網站的示例,幫助大家更好的學習和使用django框架,感興趣的朋友可以了解下2020-09-09