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

    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()
    
    
    
     
     
  • 相关阅读:
    webstorm 自定义代码模板
    HTML5 manifest ApplicationCache
    WebStorm 快捷键收藏
    函数内巧用注释实现多行文本拼接
    图片剪裁上传插件
    将json转为复杂url参数
    CSS3实现半像素边框
    打造自己的3D全景漫游
    自适应rem布局
    header页头内容整理
  • 原文地址:https://www.cnblogs.com/zwnsyw/p/11710750.html
Copyright © 2011-2022 走看看