• Python并发编程之创建多线程的几种方法(二)


    大家好,并发编程 进入第二篇。

    今天的内容会比较基础,主要是为了让新手也能无障碍地阅读,所以还是要再巩固下基础。学完了基础,你们也就能很顺畅地跟着我的思路理解以后的文章。

    本文目录

    • 学会使用函数创建多线程
    • 学会使用类创建多线程
    • 多线程:必学函数讲解

    经过总结,Python创建多线程主要有如下两种方法:

    • 函数

    接下来,我们就来揭开多线程的神秘面纱。

    . 学会使用函数创建多线程

    在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程。

    threading.Thread() 一般接收两个参数:

    • 线程函数名:要放置线程让其后台执行的函数,由我们自已定义,注意不要加()
    • 线程函数的参数:线程函数名所需的参数,以元组的形式传入。若不需要参数,可以不指定。

    举个例子

     1import time
    2from threading import Thread
    3
    4# 自定义线程函数。
    5def main(name="Python"):
    6 for i in range(2):
    7 print("hello", name)
    8 time.sleep(1)
    9
    10# 创建线程01,不指定参数
    11thread_01 = Thread(target=main)
    12# 启动线程01
    13thread_01.start()
    14
    15
    16# 创建线程02,指定参数,注意逗号
    17thread_02 = Thread(target=main, args=("MING",))
    18# 启动线程02
    19thread_02.start()

    可以看到输出

    1hello Python
    2hello MING
    3hello Python
    4hello MING

    是不是超级简单呢?别急,下面也是一样简单。

    . 学会使用类创建多线程

    相比较函数而言,使用类创建线程,会比较麻烦一点。

    首先,我们要自定义一个类,对于这个类有两点要求,

    • 必须继承 threading.Thread 这个父类;
    • 必须覆写 run 方法。

    这里的 run 方法,和我们上面线程函数的性质是一样的,可以写我们的业务逻辑程序。在 start() 后将会调用。

    来看一下例子
    为了方便对比,run函数我复用上面的main

     1import time
    2from threading import Thread
    3
    4class MyThread(Thread):
    5 def __init__(self, name="Python"):
    6 # 注意,super().__init__() 一定要写
    7 # 而且要写在最前面,否则会报错。
    8 super().__init__()
    9 self.name=name
    10
    11 def run(self):
    12 for i in range(2):
    13 print("hello", self.name)
    14 time.sleep(1)
    15
    16if __name__ == '__main__':
    17 # 创建线程01,不指定参数
    18 thread_01 = MyThread()
    19 # 创建线程02,指定参数
    20 thread_02 = MyThread("MING")
    21
    22 thread_01.start()
    23 thread_02.start()

    当然结果也是一样的。

    1hello Python
    2hello MING
    3hello Python
    4hello MING

    . 多线程:必学函数讲解

    学完了两种创建线程的方式,你一定会惊叹,咋么这么简单,一点难度都没有。

    其实不然,上面我们的线程函数 为了方便理解,都使用的最简单的代码逻辑。而在实际使用当中,多线程运行期间,还会出现诸多问题,只是我们现在还没体会到它的复杂而已。

    不过,你也不必担心,在后面的章节中,我会带着大家一起来探讨一下,都有哪些难题,应该如何解决。

    磨刀不误吹柴工,我们首先得来认识一下,Python给我们提供的 Thread 都有哪些函数和属性,实现哪些功能。学习完这些,在后期的学习中,我们才能更加得以应手。

    经过我的总结,大约常用的方法有如下这些:

     1t=Thread(target=func)
    2
    3# 启动子线程
    4t.start()
    5
    6# 阻塞子线程,待子线程结束后,再往下执行
    7t.join()
    8
    9# 判断线程是否在执行状态,在执行返回True,否则返回False
    10t.is_alive()
    11t.isAlive()
    12
    13# 设置线程是否随主线程退出而退出,默认为False
    14t.daemon = True
    15t.daemon = False
    16
    17# 设置线程名
    18t.name = "My-Thread"

    好了,Python线程基础知识,我们大概都介绍完了。

    从下一章开始,我们就开始接触多线程里比较难的知识点啦,是不是有点小期待呢?


     

  • 相关阅读:
    Ubuntu 18.04 设置静态IP
    面试问题总结
    hadoop集群搭建流程
    胡适:天下没有白费的努力
    学习的技术内容
    Windows MySql安装
    MySql 基础知识
    windows maven 安装与配置
    Logstash抽取数据到Elasticsearch(1)
    后台运行导入数据库
  • 原文地址:https://www.cnblogs.com/wongbingming/p/9028851.html
Copyright © 2020-2023  润新知