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()
  • 相关阅读:
    android openGL ES2 一切从绘制纹理開始
    HTML5 界面元素 Canvas 參考手冊
    python进阶十_正則表達式(一)
    HDU 3016 Man Down(线段树)
    android 自己定义dialog并实现失去焦点(背景透明)的功能
    上海传智程序员携手设计狮美女雨中烧烤!!
    vim visual操作备忘
    MySQl Study学习之--MySQl二进制日志管理
    Android View measure (三) 经常用法
    Analyze提示:Value stored to "***"is never read
  • 原文地址:https://www.cnblogs.com/Just-a-calm-programmer/p/12705395.html
Copyright © 2011-2022 走看看