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

      

  • 相关阅读:
    [APM] OneAPM 云监控部署与试用体验
    Elastic Stack 安装
    xBIM 综合使用案例与 ASP.NET MVC 集成(一)
    JQuery DataTables Selected Row
    力导向图Demo
    WPF ViewModelLocator
    Syncfusion SfDataGrid 导出Excel
    HTML Table to Json
    .net core 2.0 虚拟目录下载 Android Apk 等文件
    在BootStrap的modal中使用Select2
  • 原文地址:https://www.cnblogs.com/cloniu/p/6281575.html
Copyright © 2011-2022 走看看