threading 多线程

多线程类的方法

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()

  

posted @ 2017-01-13 09:45  200ML  阅读(129)  评论(0编辑  收藏  举报