Python threading模块核心用法与多线程并发实战

顾星河
顾星河
发布时间:2026-10-12 | 2人浏览过
原创

本文深入解析Python threading模块,通过对比单线程与多线程执行耗时,展示Thread类的并发优势。详细讲解activeCount获取线程数、enumerate列出线程对象及setDaemon设置后台进程的具体用法,帮助开发者掌握Python多线程编程核心技巧。

Python中的threading模块提供了比底层thread模块更高层的API,旨在简化线程的并发性处理。该模块支持多个线程并发运行,并允许这些线程共享内存空间,从而实现更高效的数据交互与任务处理。

接下来将详细演示threading模块的具体应用场景与代码实现。

一、Thread类的基本使用

在使用多线程时,目标函数可以通过实例化一个Thread对象来代表一个独立的线程。创建好Thread对象后,调用其start()方法即可启动该线程,使其开始执行指定的任务。

为了直观展示多线程的优势,下面对比了不使用多线程与使用多线程并发两种场景下的执行效果。

首先展示的是不使用多线程的情况,即串行执行任务。

具体实现代码如下:

#!/usr/bin/python 
#compare for multi threads 
import time 
def worker(): 
    print"worker" 
    time.sleep(1) 
    return 
    if__name__ =="__main__": 
    for i in xrange(5): 
    worker()

执行上述代码后的结果如下:

接下来展示使用多线程并发执行相同任务的操作。

对应的代码实现如下:

#!/usr/bin/python 
import threading 
import time 
defworker(): 
    print"worker" 
    time.sleep(1) 
    return 
    fori in xrange(5): 
        t=threading.Thread(target=worker) 
        t.start()

从执行结果可以明显看出,使用多线程并发操作所花费的时间远少于串行执行,体现了多线程在提升程序运行效率方面的显著优势。

二、threading.activeCount()方法详解

该方法用于返回当前进程中活跃的线程数量。需要注意的是,返回的计数中包含了主线程本身,因此在计算子线程数量时需减去1。

相关代码示例如下:

#!/usr/bin/python 
#current's number of threads 
import threading 
import time 
defworker(): 
    print"test" 
    time.sleep(1) 
    for i in xrange(5): 
        t=threading.Thread(target=worker) 
        t.start() 
        print"current has %d threads" % (threading.activeCount() -1)

三、threading.enumerate()方法详解

此方法用于返回当前正在运行的Thread对象列表,包括主线程和所有已启动但未结束的子线程。

具体代码示例如下:

#!/usr/bin/python 
#test the variable threading.enumerate() 
import threading 
import time 
defworker(): 
    print"test" 
    time.sleep(2) 
    threads=[] 
    for i in xrange(5): 
        t=threading.Thread(target=worker) 
        threads.append(t) 
        t.start() 
        for item in threading.enumerate(): 
            print item 
            print for item in threads: 
                print item

四、threading.setDaemon()方法详解

该方法用于将线程设置为后台进程(守护线程)。后台线程的特点是:当所有非后台线程结束时,无论后台线程是否执行完毕,主程序都会立即退出。

设置后台线程的代码如下:

#!/usr/bin/python 
#create a daemon 
import threading 
import time 
def worker(): 
    time.sleep(3) 
    print"worker" 
    t=threading.Thread(target=worker) 
    t.setDaemon(True) 
    t.start() 
    print"haha"

观察运行结果可以发现,worker()方法中的打印操作并未显示,这是因为主线程在打印“haha”后结束,导致作为后台进程的worker线程被强制终止,从而验证了setDaemon()的效果。

至此,关于Python threading模块的简要介绍已完成。如需了解更多threading模块相关内容,建议查阅本站过往文章或继续浏览后续教程,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表