Python實(shí)現(xiàn)的多線程同步與互斥鎖功能示例
本文實(shí)例講述了Python實(shí)現(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() #實(shí)例化一個(gè)Thread對(duì)象,每個(gè)Thread對(duì)象代表著一個(gè)線程 s.start() #通過start()方法,開始線程活動(dòng) ''' #''' 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 #多個(gè)線程共享操作的數(shù)據(jù) mu = threading.Lock() #創(chuàng)建一個(gè)鎖 class MyThread(threading.Thread): def run(self): global num time.sleep(1) if mu.acquire(True): #獲取鎖狀態(tài),一個(gè)線程有鎖時(shí),別的線程只能在外面等著 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()
運(yùn)行結(jié)果:
再分別運(yùn)行注釋中的每一部分代碼:
1. 不加鎖:
2. 加鎖:
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python學(xué)習(xí)之二叉樹實(shí)現(xiàn)的示例詳解
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)二叉樹的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-04-04python中關(guān)于數(shù)據(jù)類型的學(xué)習(xí)筆記
在本篇文章里小編給大家整理了關(guān)于python中關(guān)于數(shù)據(jù)類型的學(xué)習(xí)筆記內(nèi)容,需要的朋友們可以參考下。2020-07-07PyTorch中的C++擴(kuò)展實(shí)現(xiàn)
這篇文章主要介紹了PyTorch中的C++擴(kuò)展實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python?keras構(gòu)建和訓(xùn)練模型簡便性初探
這篇文章主要介紹了python?keras構(gòu)建和訓(xùn)練模型簡便性初探,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步
這篇文章主要給大家詳細(xì)介紹了python實(shí)現(xiàn)Android與windows局域網(wǎng)文件夾同步,文中有詳細(xì)的代碼示例和圖文介紹,具有一定的參考價(jià)值,需要的朋友可以參考下2023-09-09Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法
這篇文章主要介紹了Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法,是很實(shí)用的功能,需要的朋友可以參考下2014-08-08Python實(shí)現(xiàn)簡單的文件傳輸與MySQL備份的腳本分享
這篇文章主要介紹了Python實(shí)現(xiàn)簡單的文件傳輸與MySQL備份的腳本分享,用到了socket與tarfile模塊,需要的朋友可以參考下2016-01-01Pytorch 實(shí)現(xiàn)權(quán)重初始化
今天小編就為大家分享一篇Pytorch 實(shí)現(xiàn)權(quán)重初始化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12