• 多线程


    Python多线程多用于IO密集型操作,对于计算密集型不适用
    #1.多线程编写示例
    
    import threading
    
    def func(args):
        print("子线程",args)
    
    t = threading.Thread(target= func,args=(11,))  # 11后面的逗号是为了区别括号不是集合
    t.start()
    
    print("主线程")
    
    
    ##########################2.主线程默认等子线程执行完毕##############################
    import threading
    import time
    
    def func(arg):
        time.sleep(arg)
        print("子线程%s秒"%arg)
    
    t1 = threading.Thread(target= func,args=(3,))
    t1.start()
    
    t2 = threading.Thread(target= func,args=(5,))
    t2.start()
    
    print("主线程")
    
    
    .setDaemon(True)守护进程
    ##########3.主线程不在等子线程执行完毕,主线程终止则所有子线程终止#############
    import threading
    import time
    
    def func(arg):
        time.sleep(arg)
        print("子线程%s秒"%arg)
    
    t1 = threading.Thread(target= func,args=(3,))
    t1.setDaemon(True)#守护进程,在start之前,为True时,主线程不在等待子线程
    t1.start()
    
    t2 = threading.Thread(target= func,args=(5,))
    t2.start()
    
    print("主线程")

    .join()

    
    
    #########4.开发者可以控制主线程等待子线程(最多等待时间)#############
    import threading
    import time
    
    def func(arg):
        time.sleep(arg)
        print("子线程%s秒"%arg)
    
    t1 = threading.Thread(target= func,args=(1,))
    t1.start()
    t1.join(2)  # 有参数n,让主线程在这里最多等待n秒,无论是否执行完毕,都会继续往下走
    
    t2 = threading.Thread(target= func,args=(3,))
    t2.start()
    t2.join()# 无参数,让主线程在这等着,等到子线程t1执行完毕,才可以继续往下走。
    
    print("主线程")
    
    

    获取线程对象

    #############5.获取线程名称#############
    import time
    import threading
    
    def func(arg):
        t = threading.current_thread()   #获取当前执行该函数的线程的对象
        name = t.getName()  # 根据当前线程对象获取当前线程名称
        print(name,"传的值是:",arg)
    
    t1 = threading.Thread(target= func,args=(1,))
    t1.setName("子线程1")
    t1.start()
    
    t2 = threading.Thread(target=func,args=(2,))
    t2.setName("子线程2")
    t2.start()
    time.sleep(1)
    print("主线程")

    线程本质

    ########6.线程本质#########
    import threading
    def func(arg):
        print(arg,"
    ")
    
    t1 = threading.Thread(target=func,args=(33,))
    t1.start()  #start 不是立即开始运行线程,而是告诉CPU,我已经准备好了,你可以调度我了,cpu什么时候高兴什么时候运行线程
    print("主线程")
    
    
    了解:面向对象版本的多线程
    
    
    #######7.了解:面向对象版本的多线程########
    #多线程方式:1
    import threading
    def func(arg):
        print(arg)
    
    t1 = threading.Thread(target=func,args=(12,))
    t1.start()
    
    #duoxianc方式:2
    class MyThread(threading.Thread):
        def run(self):
            print(self._args,self._kwargs)
    
    t3 = MyThread(args=(44,"name=zwnsyw"))
    t3.start()
    
    
    
     
     
  • 相关阅读:
    奶萨的团队框架(Grid)个人设置技巧以及使用方法
    巫妖王之怒:3.35暗牧输出手法入门指引
    WLK3.3.5治疗怎么玩:治疗职业心得汇总
    WLK奥术fs怎么打高DPS
    战斗贼入门级输出循环
    3.35国服法师DPS提升指引 奥与火的双重奏
    3.35奶萨新手无聊看看帖
    邪冰双手(鲜血领域)——新手推荐,AOE和移动战都不错
    WLK 防骑T
    WLK防骑拉怪手法(要有序排列再给我答案)
  • 原文地址:https://www.cnblogs.com/zwnsyw/p/11710750.html
Copyright © 2020-2023  润新知