zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    数据库中索引的概念
    将博客搬至CSDN
    数据结构之图(图的基本操作)
    数据结构之图(图的简介)
    数据结构树之红黑树
    图解数据结构树之AVL树
    排序算法之选择排序
    数据结构树之二分查找树
    Kali-Dos洪水攻击之Hping3
    Linux系统查看CPU使用率命令
  • 原文地址:https://www.cnblogs.com/Hexdecimal/p/9406892.html
Copyright © 2011-2022 走看看