多线程类的方法
import threading,time
class MyThread(threading.Thread):
def __init__(self,mun):
threading.Thread.__init__(self)
self.mun = mun
def run(self):
print(self.mun)
time.sleep(2)
if __name__ == '__main__':
t1 = MyThread(1)
t1.start()
join等待 方法
等待多线程执行完 在执行下一个进程
import threading,time
def run(n):
time.sleep(1)
print(n)
t_list = []
for i in range(10):
t = threading.Thread(target=run,args=(i,))
t.start()
t_list.append(t)
for i in t_list:
i.join()
print('____________________')
一种错误的用法
def run(n):
time.sleep(1)
print(n)
for i in range(10):
t = threading.Thread(target=run,args=(i,))
t.start()
t.join()
print('____________________')
import threading,time
进程守护 setDaemon
def run(n):
time.sleep(1)
print(n)
for i in range(10):
t = threading.Thread(target=run,args=(i,))
t.setDaemon(True)
t.start()
print('____________________')
import threading,time
# 线程互拆锁
def run(n):
global mun
time.sleep(1)
l.acquire() #声明锁
mun -= 1
l.release() #释放所
l = threading.Lock() #生命一个锁的实例
mun = 0
list_1 = []
for i in range(100):
t = threading.Thread(target=run,args=(i,))
t.start()
list_1.append(t)
for i in list_1:
i.join()
print('____________________')
print(mun)
import threading,time
# 如果把sleep 放在锁里面 就会出现穿行的情况
def run(n):
global mun
l.acquire() #声明锁
mun -= 1
time.sleep(1)
l.release() #释放所
l = threading.Lock() #生命一个锁的实例
mun = 0
list_1 = []
for i in range(100):
t = threading.Thread(target=run,args=(i,))
t.start()
list_1.append(t)
for i in list_1:
i.join()
print('____________________')
print(mun)
import threading,time
#允许多个进程同时进行的锁 theading.BoundedSemaphore
def run(n):
global mun
l.acquire() #声明锁
mun -= 1
time.sleep(1)
l.release() #释放所
print(mun)
def run1(n):
time.sleep(1)
print(n)
l = threading.BoundedSemaphore(5) #声明一个允许多个线程修改的全局变量的 锁
mun = 0
for i in range(100):
t = threading.Thread(target=run,args=(i,))
t.start()
print(threading.active_count()) #进程活动的数量
print('____________________')
print(mun)
import threading,time
#event 进程之间的交互 event.set()设置 event.clear()明确 event.wait()等待,
def light():
cont = 0
while True:
if cont < 30:
if not event.is_set():
event.set()
print('lmgreen------',cont)
elif cont < 35:
print('yellow-------',cont)
elif cont < 60:
if event.is_set():
event.clear()
print('red-------',cont)
else:
cont = 0
cont += 1
time.sleep(0.3)
def car(n):
cont = 0
while True:
event.wait()
print(' @~~%s~~@'%n)
time.sleep(0.2)
event = threading.Event()
car_1 = threading.Thread(target=car,args=(1,))
car_1.start()
red_light = threading.Thread(target=light,)
red_light.start()