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()
    

      

  • 相关阅读:
    STM32F103ZET6 之 ADC+TIM+DMA+USART 综合实验
    关于Stm32定时器+ADC+DMA进行AD采样的实现
    stm32之TIM+ADC+DMA采集50HZ交流信号
    STM32F103VET6 ADC采集64点做FFT变换
    STM32f103的数电采集电路的DMA设计和使用优化程序
    Python 实现 Html 转 Markdown(支持 MathJax 数学公式)
    快速傅里叶变换FFT& 数论变换NTT
    拆系数FFT
    Python 中文编码
    Python 编写一个有道翻译的 workflow 教程
  • 原文地址:https://www.cnblogs.com/Hexdecimal/p/9406892.html
Copyright © 2011-2022 走看看