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()
運行結(jié)果:

再分別運行注釋中的每一部分代碼:
1. 不加鎖:

2. 加鎖:

更多關于Python相關內(nèi)容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結(jié)》、《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
python中關于py文件之間相互import的問題及解決方法
這篇文章主要介紹了python中關于py文件之間相互import的問題,本文用一個例子演示下如何解決python中循環(huán)引用的問題,需要的朋友可以參考下2022-02-02
Python3中延時變量和 free_list鏈表的區(qū)別解析
這篇文章主要介紹了Python3中延時變量和 free_list鏈表的區(qū)別,在Python3中,"延時變量" 和 "free_list鏈表" 是兩個不同的概念,他們之間沒有直接聯(lián)系,本文給實例相結(jié)合給大家講解的非常詳細,需要的朋友可以參考下2023-04-04
python連接mysql數(shù)據(jù)庫示例(做增刪改操作)
python連接mysql數(shù)據(jù)庫示例,提供創(chuàng)建表,刪除表,數(shù)據(jù)增、刪、改,批量插入操作,大家參考使用吧2013-12-12
利用django創(chuàng)建一個簡易的博客網(wǎng)站的示例
這篇文章主要介紹了利用django創(chuàng)建一個簡易的博客網(wǎng)站的示例,幫助大家更好的學習和使用django框架,感興趣的朋友可以了解下2020-09-09

