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()
        
        
  • 相关阅读:
    使用Newtonsoft进行JSON序列化时将枚举序列化为字符串的方法
    通过javac导出Jar包
    JAVA中JDBC连接Mysql数据库简单测试
    使用Swashbuckle.AspNetCore生成.NetCore WEBAPI的接口文档
    CentOS7中使用yum安装Nginx的方法
    Dockerfile 指令 ADD 和 COPY介绍
    Azure Web应用中设置静态虚拟目录的方法(比如部署Django需要用到)
    pip常用命令(转载)
    android发布新版忘记keystore(jks)密码终极解决方案
    IntelliJ Idea 常用快捷键列表
  • 原文地址:https://www.cnblogs.com/2012harry/p/2837711.html
Copyright © 2011-2022 走看看