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()
        
        
  • 相关阅读:
    Selenium WebDriver 中鼠标和键盘事件分析及扩展
    Windows Mobile 常用键值VK对应表
    application.yml
    示例
    秒懂HTTPS接口(实现篇)
    秒懂HTTPS接口(接口测试篇)
    秒懂HTTPS接口(原理篇)
    SpringBoot全局捕获异常示例
    官方文档
    Python基础02——控制流
  • 原文地址:https://www.cnblogs.com/2012harry/p/2837711.html
Copyright © 2011-2022 走看看