zoukankan      html  css  js  c++  java
  • Day 30 process&thread_2

    进程和线程_2

    1、继承类创建线程

     1 import threading,time
     2 
     3 class Mythread(threading.Thread):       #建立类,继承threading.Thread
     4     def __init__(self):
     5         threading.Thread.__init__(self)     #继承父类的__init__功能
     6 
     7     def run(self):          #run为python 自带,后面实例化后,start()自动调用run()功能
     8         print("{name} start to read in the {time}.".format(name=self,time = time.ctime()))
     9 
    10 l = []
    11 for i in range(6):
    12     t = Mythread()
    13     t.start()                       #相当于t.run() 
    14     l.append(t)
    15     t.join()
    16 
    17 # for j in l:
    18 #     j.join()
    19 
    20 print("All is end...{time}".format(time=time.ctime()))

    2、互斥锁

     1 import threading
     2 import time
     3 
     4 lock = threading.Lock()         #引用互斥锁,使用前先定义
     5 
     6 def sub():
     7     global num
     8     lock.acquire()              #lock.aquire() 引用锁后,只有运行到release()才能让其它单位继续引用
     9     temp = num
    10     time.sleep(0.1)
    11     num = temp - 1
    12     lock.release()              #释放锁
    13     time.sleep(2)
    14 
    15 num = 100
    16 l = []
    17 for i in range(100):
    18     t = threading.Thread(target=sub,args=())
    19     t.start()
    20     l.append(t)
    21 
    22 for t in l:
    23     t.join()
    24 
    25 print(num)

    3、递归锁和死锁

    import threading,time
    
    Rlock = threading.RLock()  #Rlock引入Lock和counter变量,每进行一次acquire,counter计数一次,release则减少一次,直到归0,其它线程才可以获得资源。
    
    class Th(threading.Thread):
        def __init__(self):
            threading.Thread.__init__(self)
    
        def run(self):
            self.foo()
            self.bar()
    
        def foo(self):
            Rlock.acquire()
            print("I am %s GET LOCKA.....%s" %(self.name,time.ctime()))
            Rlock.acquire()
            print("I am %s GET LOCKB.....%s" %(self.name,time.ctime()))
            Rlock.release()
            Rlock.release()
    
        def bar(self):
            Rlock.acquire()
            print("I am %s GET LOCKA.....%s" %(self.name,time.ctime()))
            time.sleep(1)
            Rlock.acquire()
            print("I am %s GET LOCKB.....%s" %(self.name,time.ctime()))
            Rlock.release()
            Rlock.release()
    
    
    for i in range(10):
        t = Th()
        t.start()

      

  • 相关阅读:
    JQuery 介绍
    转载:World class Software
    how to get domain user info from AD in C#
    抽象类与接口的实际应用{百分百的重点}
    设计模式学习笔记
    百度前端笔试面试7个试题
    虚函数在C#中的用法
    设计模式学习MVC实践
    VMware 创建私有网络试验室
    设计模式学习单件模式
  • 原文地址:https://www.cnblogs.com/LiChaoAI/p/7200474.html
Copyright © 2011-2022 走看看