Python创建多线程的两种常用方法总结

 更新时间:2023年05月16日 11:52:16   作者:不想赖床  
这篇文章主要为大家详细介绍了Python中创建多线程的两种常用方法,文中的示例代码简洁易懂,对我们掌握Python有一定的帮助,需要的可以收藏一下

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

  • 函数

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

1. 用函数创建多线程

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

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

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

举个例子

import time
from threading import Thread

# 自定义线程函数。
def target(name="Python"):
    for i in range(2):
        print("hello", name)
        time.sleep(1)

# 创建线程01,不指定参数
thread_01 = Thread(target=target)
# 启动线程01
thread_01.start()


# 创建线程02,指定参数,注意逗号
thread_02 = Thread(target=target, args=("MING",))
# 启动线程02
thread_02.start()

可以看到输出

hello Python
hello MING
hello Python
hello MING

2. 用类创建多线程

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

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

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

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

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

import time
from threading import Thread

class MyThread(Thread):
    def __init__(self, type="Python"):
        # 注意:super().__init__() 必须写
        # 且最好写在第一行
        super().__init__()
        self.type=type

    def run(self):
        for i in range(2):
            print("hello", self.type)
            time.sleep(1)

if __name__ == '__main__':
    # 创建线程01,不指定参数
    thread_01 = MyThread()
    # 创建线程02,指定参数
    thread_02 = MyThread("MING")

    thread_01.start()
    thread_02.start()

当然结果也是一样的。

hello Python
hello MING
hello Python
hello MING

3. 线程对象的方法

上面介绍了当前 Python 中创建线程两种主要方法。

创建线程是件很容易的事,但要想用好线程,还需要学习线程对象的几个函数。

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

# 如上所述,创建一个线程
t=Thread(target=func)

# 启动子线程
t.start()

# 阻塞子线程,待子线程结束后,再往下执行
t.join()

# 判断线程是否在执行状态,在执行返回True,否则返回False
t.is_alive()
t.isAlive()

# 设置线程是否随主线程退出而退出,默认为False
t.daemon = True
t.daemon = False

# 设置线程名
t.name = "My-Thread"

到此这篇关于Python创建多线程的两种常用方法总结的文章就介绍到这了,更多相关Python创建多线程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题

    解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题

    很多朋友向小编求助pycharm安装scrapy DLL load failed:找不到指定的程序的问题,就这一问题小编在window10 + anaconda3 +pycharm2020.1.1 + scrapy安装亲测可用,下面把我的处理过程分享到脚本之家平台,供大家参考
    2021-06-06
  • Anaconda安装pytorch和paddle的方法步骤

    Anaconda安装pytorch和paddle的方法步骤

    本文主要介绍了Anaconda安装pytorch和paddle的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 深入理解Python虚拟机中魔术方法的使用

    深入理解Python虚拟机中魔术方法的使用

    这篇文章主要给大家介绍在 cpython 当中一些比较花里胡哨的魔术方法,以帮助我们自己实现比较花哨的功能,当然这其中也包含一些也非常实用的魔术方法,需要的可以参考下
    2023-05-05
  • python批量替换多文件字符串问题详解

    python批量替换多文件字符串问题详解

    批量替换是我们在日常工作中经常会遇到的一个问题,下面这篇文章主要给大家介绍了关于python批量替换多文件字符串问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • python标识符的用法及注意事项

    python标识符的用法及注意事项

    在本篇文章里小编给大家整理了一篇关于python标识符的用法及注意事项相关内容,有需要的朋友们可以学习下。
    2021-09-09
  • 数据可视化Pyecharts的实际使用方式

    数据可视化Pyecharts的实际使用方式

    这篇文章主要介绍了数据可视化Pyecharts的实际使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Python 多线程处理任务实例

    Python 多线程处理任务实例

    这篇文章主要介绍了Python 多线程处理任务,下面文章利用一个真实实例围绕Python 多线程处理任务的相关资料展开内容,需要的朋友可以参考一下
    2021-11-11
  • Python 脚本拉取 Docker 镜像问题

    Python 脚本拉取 Docker 镜像问题

    这篇文章主要介绍了 Python 脚本拉取 Docker 镜像问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Python编程快速上手——PDF文件操作案例分析

    Python编程快速上手——PDF文件操作案例分析

    这篇文章主要介绍了Python 文件操作,结合具体实例形式分析了Python针对pdf文件的遍历、读写、加密、解密等相关操作技巧与注意事项,需要的朋友可以参考下
    2020-02-02
  • tensorflow学习笔记之tfrecord文件的生成与读取

    tensorflow学习笔记之tfrecord文件的生成与读取

    这篇文章主要介绍了tensorflow学习笔记之tfrecord文件的生成与读取,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论