Python中线程threading.Thread的使用详解

2023-12-16Python编程
146

Python中线程(threading.Thread)是实现并发操作的重要手段之一,通过线程可以实现多个任务同时进行,提高程序的效率。下面,我将为大家详细讲解如何使用Python中的线程(threading.Thread)。

基本用法

Python中的线程通过threading.Thread()方法来创建,该方法接收两个参数target和args,其中target表示线程运行的目标函数,args表示函数的参数列表。我们首先来看一个最简单的Python线程示例:

import threading
import time

def print_num(num):
    for i in range(num):
        print(i)
        time.sleep(0.5)

if __name__ == '__main__':
    t1 = threading.Thread(target=print_num, args=(5,))
    t1.start()

代码中,我们先定义了一个print_num()函数,该函数接收一个整数参数num,然后在函数内循环打印数字,并通过time.sleep(0.5)模拟了一个耗时操作。接下来,我们通过threading.Thread()方法创建了一个线程对象t1,将print_num()函数作为目标函数,args=(5,)表示函数的参数为5。最后,通过t1.start()方法启动线程。

运行程序,我们可以看到如下输出:

0
1
2
3
4

可以看到,程序按顺序输出了5个数字,说明我们成功地创建了一个Python线程,并启动了它。

守护线程

有时候我们创建线程仅仅是为了执行一些特定的任务,而不是等待它执行完毕。这时候,我们可以将该线程设置为守护线程(daemon thread),当主线程结束时,守护线程自动退出。下面是一个简单的Python守护线程示例:

import threading
import time

def print_num(num):
    for i in range(num):
        print(i)
        time.sleep(0.5)

if __name__ == '__main__':
    t1 = threading.Thread(target=print_num, args=(10,))
    t1.daemon = True
    t1.start()
    print('main thread end')

代码中,我们依然是通过threading.Thread()方法创建了一个线程对象t1,并将print_num()函数作为目标函数。不过这次,我们在t1启动前把它设置成了守护线程,即t1.daemon = True。接着,我们输出了一行提示语“main thread end”,表示主线程已经结束。

运行程序,我们可以看到如下输出:

0
main thread end
1
2
3
4
5
6
7
8
9

可以看到,我们成功地创建了一个Python守护线程,并在主线程结束后,守护线程自动退出。

总结

通过本篇文章,我们学习了Python中线程(threading.Thread)的基本用法和守护线程的概念,并且通过两个示例代码实践了线程的创建和启动。在实际开发中,线程是一个非常重要的概念,它可以帮助我们处理程序中的并发问题,实现更高效的程序运行。

The End

相关推荐

解析Python中的eval()、exec()及其相关函数
Python中有三个内置函数eval()、exec()和compile()来执行动态代码。这些函数能够从字符串参数中读取Python代码并在运行时执行该代码。但是,使用这些函数时必须小心,因为它们的不当使用可能会导致安全漏洞。...
2023-12-18 Python编程
117

Python下载网络文本数据到本地内存的四种实现方法示例
在Python中,下载网络文本数据到本地内存是常见的操作之一。本文将介绍四种常见的下载网络文本数据到本地内存的实现方法,并提供示例说明。...
2023-12-18 Python编程
101

Python 二进制字节流数据的读取操作(bytes与bitstring)
来给你详细讲解下Python 二进制字节流数据的读取操作(bytes与bitstring)。...
2023-12-18 Python编程
120

Python3.0与2.X版本的区别实例分析
Python 3.x 是 Python 2.x 的下一个重大版本,其中有一些值得注意的区别。 Python 3.0中包含了许多不兼容的变化,这意味着在迁移到3.0之前,必须进行代码更改和测试。本文将介绍主要的差异,并给出一些实例来说明不同点。...
2023-12-18 Python编程
34

python如何在终端里面显示一张图片
要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤:...
2023-12-18 Python编程
91

Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下:...
2023-12-18 Python编程
103