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

      

  • 相关阅读:
    在tortoiseSVN上将trunk的代码merge到branch上去
    ajax提交后完全不进入action直接返回错误
    Eclipse "IOConsole updater" has encounter a problem
    jquery判断checkbox是否选中及改变checkbox状态[转]
    JS的Data类型格式化(转)
    Eclipse内置Tomcat的配置
    firebug下载时出现there was an error loading firebug
    Mac下Tomcat启动时乱码
    ibatis插入数据后返回自增长的主键
    给Mac下的iTerm2增加配色
  • 原文地址:https://www.cnblogs.com/cloniu/p/6281575.html
Copyright © 2011-2022 走看看