zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    PAT Basic 1023 组个最小数 (20 分)
    PAT Advanced 1048 Find Coins (25 分)
    PAT Basic 1005 继续(3n+1)猜想 (25 分)
    PAT Advanced 1050 String Subtraction (20 分)
    PAT Advanced 1041 Be Unique (20 分)
    PAT Basic 1047 编程团体赛 (20 分)
    SpringSecurity整合SpringBoot
    给正在运行的Docker容器动态绑定卷组
    linux 中格式化json字符串
    docker/kubernetes国内源/镜像源解决方式
  • 原文地址:https://www.cnblogs.com/cloniu/p/6281575.html
Copyright © 2011-2022 走看看