zoukankan      html  css  js  c++  java
  • Python——多线程

    简单的创建多线程

    import threading
    # 导入模块
    import time
    def xian1():
        for i in range(3):
            print("老子是第一")
            time.sleep(1)
    
    
    def xian2():
        for i in range(3):
            print("老子是第二")
            time.sleep(1)
    
    def main():
        t1 = threading.Thread(target=xian1)
        t2 = threading.Thread(target=xian2)
        t1.start()
        t2.start()
    
    if __name__ == '__main__':
        main()
    

    用继承threading模块创建多线程类

    import threading
    # 导入模块
    import time
    
    
    class A(threading.Thread): #创建一个类继承threading模块
        def run(self):
            for i in range(3):
                print("老子是第一")
                time.sleep(1)
    
    class B(threading.Thread):
        def run(self):
            for i in range(3):
                print("老子是第二")
                time.sleep(1)
    
    
    def main():
        t1 = A()
        t2 = B()
        t1.start()
        t2.start()
        t2.run1().start()
    
    if __name__ == '__main__':
        main()
    

    多线程  创建锁

    import threading
    # 导入模块
    import time
    
    glock = threading.Lock()
    # 创建锁
    value = 0
    
    def run ():
        global value
        # 上锁
        glock.acquire()
        for x in range(1000000):
            value += 1
        print(value)
        glock.release()
    #     解锁
    
    def main():
        for i in range(2):
            t1 = threading.Thread(target=run)
            t1.start()
    
    if __name__ == '__main__':
        main()

    多线程,生产与消费模式

    import threading
    import random
    import time
    # 设置总钱数
    zongmony = 1000
    # 创建锁
    glock = threading.Lock()
    
    # 次数
    times = 0
    class scz(threading.Thread):
        def run(self):
            global zongmony
            global times
            while True:
                # 随机生产一些钱
                mony = random.randint(100, 1000)
                # 生产好后建立锁,
                glock.acquire()
                # 判断是否生产了十次
                if times >10:
                    glock.release()
                    break
                zongmony += mony
                times +=1
                print("生产者生产了%d元,总共有%d元" %(mony,zongmony))
                # 执行完以后释放锁
                glock.release()
                time.sleep(0.5)
    
    class xfz(threading.Thread):
        def run(self):
            global zongmony
            global times
            while True:
                # 随机消费一些钱
                xiaofei = random.randint(100, 1000)
                glock.acquire()
                if xiaofei <zongmony:
                    zongmony -=xiaofei
                    print("消费者消费%d元,剩余%d元"%(xiaofei , zongmony))
                else :
                    if times >10:
                        glock.acquire()
                        break
                    print("余额不足!!")
                time.sleep(0.5)
                glock.release()
    
    def main():
        for i in range(5):
            t = scz()
            t.start()
            if i >= 2:
                t1 = xfz()
                t1.start()
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    如何在某些情况下禁止提交Select下拉框中的默认值或者第一个值(默认选中的就是第一个值啦……)
    渗透测试
    如何制作chrome浏览器插件之一
    linux中的vi命令
    链栈
    二进制转16进制JAVA代码
    抽象数据类型的表示与实现
    变量的引用类型和非引用类型的区别
    说明exit()函数作用的程序
    计算1-1/x+1/x*x
  • 原文地址:https://www.cnblogs.com/wocaonidaye/p/12719296.html
Copyright © 2011-2022 走看看