import threading
def dem1():
for i in range(10):
print('aaaaaaaaa')
def dem2():
for i in range(10):
print('bbbbbbbbbbb')
t1 = threading.Thread(target=dem1)
t2 = threading.Thread(target=dem2)
l=[t1,t2]
for i in l:
i.start()
for s in l:
s.join()
import time
import threading
def addNum():
global num
lock.acquire()
temp=num
time.sleep(0.1)
num =temp-1
lock.release()
num = 100
thread_list = []
lock = threading.Lock()
for i in range(100):
t = threading.Thread(target=addNum)
t.start()
thread_list.append(t)
for t in thread_list:
t.join()
print('final num:', num )
import threading
import time
class MyThread(threading.Thread):
def actionA(self):
r_lock.acquire()
print(self.name,'gotA',time.ctime())
time.sleep(2)
r_lock.acquire()
print(self.name, 'gotB', time.ctime())
time.sleep(1)
r_lock.release()
r_lock.release()
def actionB(self):
r_lock.acquire()
print(self.name, 'gotB', time.ctime())
time.sleep(2)
r_lock.acquire()
print(self.name, 'gotA', time.ctime())
time.sleep(1)
r_lock.release()
r_lock.release()
def run(self):
self.actionA()
self.actionB()
if __name__ == '__main__':
r_lock=threading.RLock()
L=[]
for i in range(5):
t = MyThread()
t.start()
L.append(t)
for i in L:
i.join()
print('end....................')
同步条件(Event)
import threading
import time
class Teacher(threading.Thread):
def run(self):
print(event.isSet)
print('同学们下课!')
event.set()
time.sleep(5)
print('放学吧')
event.set()
class Students(threading.Thread):
def run(self):
event.wait()
print('终于下课了')
time.sleep(3)
event.clear()
event.wait()
print('还没放学')
if __name__ == '__main__':
event = threading.Event()
list = []
for i in range(5):
list.append(Students())
list.append(Teacher())
for t in list:
t.start()
for t in list:
t.join()
信号量
import threading,time
class MyThread(threading.Thread):
def run(self):
semaphore.acquire()
print(self.name)
time.sleep(2)
semaphore.release()
if __name__ == '__main__':
semaphore=threading.Semaphore(5)
l = []
for i in range(10):
l.append(MyThread())
for i in l:
i.start()