python 學習第二十四天(同步鎖和遞迴鎖)

2021-08-25 05:22:02 字數 2706 閱讀 4530

import time

import threading

defaddnum

():global num #在每個執行緒中都獲取這個全域性變數

#num-=1

temp=num

#print('--get num:',num )

time.sleep(0.1)#可以把時間調短一點,看看是什麼效果

num =temp-1

#對此公共變數進行-1操作

num = 100

#設定乙個共享變數

thread_list =

for i in range(100):

t = threading.thread(target=addnum)

t.start()

for t in thread_list: #等待所有執行緒執行完畢

t.join()

print('final num:', num )#結果為99,多個執行緒都在同時操作同乙個共享資源,所以造成了資源破壞

加鎖後

import time

import threading

r = threading.lock()

####

defsub

():global num

r.acquire() #

temp = num - 1

# time.sleep(0.1) #

num = temp #這五行相當於序列,但如果後面還有**就會是併發的

r.release() #

num=100

thread_list =

for i in range(100):

t = threading.thread(target=sub)

t.start()

for t in thread_list: #等待所有執行緒執行完畢

t.join()

print('final num:', num )#結果是0

import threading,time

class

mythread

(threading.thread):

defdoa

(self):

locka.acquire()

print(self.name,"gotlocka",time.ctime())

time.sleep(3)

lockb.acquire()

print(self.name,"gotlockb",time.ctime())

lockb.release()

locka.release()

defdob(self):

lockb.acquire()

print(self.name,"gotlockb",time.ctime())

time.sleep(2)

locka.acquire()

print(self.name,"gotlocka",time.ctime())

locka.release()

lockb.release()

defrun(self):

self.doa()

self.dob()

if __name__=="__main__":

locka=threading.lock()

lockb=threading.lock()

threads=

for i in range(5):

for t in threads:

t.start()

for t in threads:

t.join()#等待執行緒結束。#程式會在中間鎖死

import threading,time

class

mythread

(threading.thread):

defdoa

(self):

rl.acquire()

print(self.name,"gotlocka",time.ctime())

time.sleep(3)

rl.acquire()

print(self.name,"gotlockb",time.ctime())

rl.release()

rl.release()

defdob(self):

rl.acquire()

print(self.name,"gotlockb",time.ctime())

time.sleep(2)

rl.acquire()

print(self.name,"gotlocka",time.ctime())

rl.release()

rl.release()

defrun(self):

self.doa()

self.dob()

if __name__=="__main__":

rl=threading.rlock()

threads=

for i in range(5):

for t in threads:

t.start()

for t in threads:

t.join()

冥想第二十四天

還有乙個需要提高的地方就是 慢一點,以往自己對成功和只是追求的太急切。一急切就亂了節奏,適當的急切是必要的 放輕鬆全身都是最舒服的狀態。平靜的內心讓自己能面對生活的困難。感謝自己,感謝家人,感謝朋友,感謝一切。不責怪自己,一天比一天進步就好。慢慢來。下午和客戶積極的溝通,全身心的投入,發現一點也不困...

學習前端的第二十四天

一 grid布局 針對的是子元素布局。1.形成乙個網格結構 父元素新增 display grid 2.劃分行和列 grid template columns grid template rows 如果是3個值 代表3行或3列 能接受具體的px 也能是百分比 劃分行和列的時候的關鍵字 和 方法 a r...

連續總結第二十四天

11.4 康鑫 連續總結第二十四天 今天學習了課本上有關陣列的知識,陣列與指標。1,指標運算包括a,賦值運算 b,算術運算 c,關係運算 d,邏輯運算。2 一維陣列 a 與指標 p 3,二維陣列 b,m行n列 與指標。4,字元陣列 s 與指標 ps 5,指標陣列 完成了課本的例題,通過程式設計實現二...