zoukankan      html  css  js  c++  java
  • python多线程2线程应用

    上代码。。

    '''

    1、经典的生产者,消费者问题

    2、Lock和RLock差不多:Lock会死锁,RLock不会,具体google

    '''

    #coding:gbk
    '''
    Created on 2013-1-4
    
    @author: Jimmy
    
    @note: 1、一个简单的创建线程例子,外加生产者消费者问题
            2、线程同步初步
    '''
    import log
    import time
    import threading
    
    phone = 0
    
    
    class Mthread(threading.Thread):     #Mthread类继承自threading.Thread类   
        def __init__(self, ThreadName):    
            #重写__init__方法的时候要记得调用基类的__init__方法   
            threading.Thread.__init__(self,name = ThreadName)
               
        def run(self):  #重写run()方法,把自己的线程函数的代码放到这里
            #func
            pass
    
    #生产者
    class Producer(Mthread):
        def __init__(self, lock, ProducerName = "Producer"):
            Mthread.__init__(self, ProducerName)
            self.lock = lock
            pass
        def run(self):
            global phone
            while 1:
                self.lock.acquire()
                phone += 1
                print "生产一个"
                print "Produce Now: " + self.getName() + " phoneNum = " + str(phone)
                self.lock.release()
                time.sleep(5)
    #消费者
    class Consumer(Mthread):
        def __init__(self, lock, ConsumerName = "Consumer"):
            Mthread.__init__(self, ConsumerName)
            self.lock = lock
            pass
        def run(self):
            global phone
            while 1:
                self.lock.acquire()
                if phone < 1:
                    print "没有电话了,sleep 1s"
                    self.lock.release()
                    time.sleep(1)
                else:
                    phone -= 1
                    print "消费一个,sleep 3s"
                    print "Consume Now: " + self.getName() + " phoneNum = " + str(phone)
                    self.lock.release()
                    time.sleep(3)
        
    #同步的操作
    class sync():
        def __init__(self):
            pass
        
    if __name__ == "__main__":
        #===========================================================================
        # Mlog = log.logger()
        # Mlog.log("Create Thread Method")
        #===========================================================================
        lock = threading.RLock()
        #2个生产者
        p0 = Producer(lock,"p0").start()
        p1 = Producer(lock,"p1").start()
        p2 = Producer(lock,"p2").start()
    
        #3个消费者
        c0 = Consumer(lock,"c0").start()
        c1 = Consumer(lock,"c1").start()
        c2 = Consumer(lock,"c2").start()
        
        
  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    网页设计中颜色的搭配
    CSS HACK:全面兼容IE6/IE7/IE8/FF的CSS HACK
    UVa 1326 Jurassic Remains
    UVa 10340 All in All
    UVa 673 Parentheses Balance
    UVa 442 Matrix Chain Multiplication
    UVa 10970 Big Chocolate
    UVa 679 Dropping Balls
    UVa 133 The Dole Queue
  • 原文地址:https://www.cnblogs.com/2012harry/p/2837711.html
Copyright © 2011-2022 走看看