zoukankan      html  css  js  c++  java
  • 十、Python入门-多线程

    多线程

    进程

      程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念

      进程:处理机制上的一次执行过程,他是一个动态的概念

      状态:就绪态、运行态、阻塞态

      CPU(4核)可以同时执行4个线程

    线程

      进程中包含若干个线程,进程作为分配资源的基本单位,线程作为独立运行和独立调度的基本单位

    多线程

      程序执行时,程序本身就是主线程,手动创建的叫子线程,他们的关系是父子进程

    import threading
    import time
    
    def run1(name):
        while(True):
            print(name,"**")
            time.sleep(1)
    
    def run2(name):
        while(True):
            print(name,"===")
            time.sleep(3)
    
    #创建线程
    t1=threading.Thread(target=run1,args=("t1",))
    t2=threading.Thread(target=run2,args=("t2",))
    
    t1.start()    #启动线程
    t2.start()
    
    # 11.4
    t1.join()    #阻塞等待t1结束并回收资源
    t2.join()    #阻塞等待t2结束并回收资源

    线程锁

      保护共享资源

    import threading 
    import time
    
    lock=threading.Lock() #创建一个线程锁
    
    num=100
    
    def run(name):
        global num    #设置num为全局变量,只能放在里面
        while(True):
            lock.acquire()    #上锁
            if(num==0):
                break
            
            num=num-1
            print("线程",name,"目前num:",num)
            lock.release()    #释放锁
            time.sleep(1)
    
    #创建线程
    for i in range(5):
        t=threading.Thread(target=run,args=(i+1,))
        t.start()        

    多进程

      if __name__ == '__main__':     __name__变量为'__main__'时才执行,本文件时成立,当被作为模块引入时不成立

    from multiprocessing import Process
    import time
    
    def run(name):
        print("进程",name,"执行了")
        time.sleep(5)
    
    #创建进程
    if __name__ == '__main__':    #windows进程要写在里面
        p1=Process(target=run,args=("p1",))
        p2=Process(target=run,args=("p2",))
    
        p1.start()
        p2.start()
  • 相关阅读:
    Flink读取Kafka数据,进行汇总
    Flink集成到CDH上,并运行一个例子
    CDH6.2安装配置第三篇:前台页面配置讲解
    LINUX之ntp时间同步服务配置
    Dubbo+Zookeeper(一)Zookeeper初识
    SpringCloud(五)Zuul网关与分布式配置中心
    SpringCloud(四)Hystrix熔断器
    SpringCloud(三)Ribbon与Feign
    SpringCloud(二)服务注册与发现
    多线程与高并发(六) Lock
  • 原文地址:https://www.cnblogs.com/Just-a-calm-programmer/p/12705395.html
Copyright © 2011-2022 走看看