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()
  • 相关阅读:
    内层城循环应用——买衣服
    内外层循环用法
    自定义函数的应用
    少有人走的路 随笔
    拆单发货逻辑
    拆单发货-分布页
    拆单发货-主页
    SP--report存储过程
    关于C#对Xml数据解析
    C#模拟http 发送post或get请求
  • 原文地址:https://www.cnblogs.com/Just-a-calm-programmer/p/12705395.html
Copyright © 2011-2022 走看看