• Python入门学习笔记12(创建多线程)


    创建多线程的两种方式:

    1.封装成类的形式:

    class MyTread(threading.Thread):
        def __init__(self,name):
            super(MyTread,self).__init__()
            self.name = name
    
        #多线程启动的入口
        def run(self):
            self.sayHello()
    
        def sayHello(self):
            print("%s say hello!" %self.name)
            time.sleep(1)
            print("
    当前活动线程:%s" % threading.currentThread())
    
    for i in range(5):
        t = MyTread("member%d" %i)
        t.start()
    

    注意run方法是多线程启动的入口,一定要重写

    2.函数方式

    def sayHello(name):
        print("%s say hello!" %name)
        time.sleep(1)
    
    for i in range(5):
        t = threading.Thread(target=sayHello,args=("menber%d" %i,))#注意逗号
        t.start()
    

    注意单函数有传入参数时args参数中的逗号

    PS1:

    子线程在被主线程创建出来之后,子线程和主线程就是平等的,主线程并不会等待子线程结束,如果需要等待子线程结束后再进行操作,必须是有join

    def sayHello(name):
    print("%s say hello!" %name)
    time.sleep(1)

    start = time.time()
    lst = []
    for i in range(5):
    t = threading.Thread(target=sayHello,args=("menber%d" %i,))#注意逗号
    t.start()
    lst.append(t)

    #等待所有的子线程执行结束
    for t in lst:
    t.join()
    print(time.time() - start)

    如果不进行join操作,那么主线程在创建子线程之后会直接执行之后的操作,并不会等待线程执行完毕

    Ps2:守护线程

    守护线程服务于主线程,只要主线程结束,守护线程也会强制结束

    def sayHello(name):
        print("%s say hello!" %name)
        time.sleep(1)
    
    for i in range(5):
        t = threading.Thread(target=sayHello,args=("menber%d" %i,))#注意逗号
        #设置了守护线程之后,主线程结束子线程也会立即结束(不进行join的情况下)
        t.setDaemon(True)
        t.start()
    

      

  • 相关阅读:
    poj_2506_Tiling_201407211555
    poj_2524_Ubiquitous Religions_201407211506
    poj_2586_Y2K Accounting Bug_201407211318
    poj_3006_Dirichlet's Theorem on Arithmetic Progressions_201407041030
    POJ训练计划
    nyoj_10_skiing_201405181748
    nyoj_308_Substring_201405091611
    nyoj_205_求余数_201404271630
    hdu_2082_找单词_201404271536
    nyoj_176_队花的烦恼二_201404262008
  • 原文地址:https://www.cnblogs.com/Hexdecimal/p/9406892.html
Copyright © 2020-2023  润新知