Python多线程实战:函数与类的使用

需积分: 11 2 下载量 129 浏览量 更新于2024-09-18 收藏 13KB TXT 举报
"本文主要介绍了Python中的多线程编程,包括两种实现方式:函数包装和类包装线程对象。通过示例代码展示了如何使用这两种方法创建和管理线程,以及线程的一些基本操作,如线程启动、退出等。" 在Python中,多线程是一种并行处理任务的方法,它允许程序同时执行多个任务,提高效率。Python中有两种主要的使用线程的方式: 1. 函数包装线程对象: 在Python标准库的`thread`模块中,可以使用`start_new_thread()`函数来创建新的线程。这是一个简单的例子: ```python import time import thread def timer(no, interval): cnt = 0 while cnt < 10: print('Thread: (%d) Time: %s\n' % (no, time.ctime())) time.sleep(interval) cnt += 1 thread.exit_thread() def test(): # 使用thread.start_new_thread() 创建两个新线程 thread.start_new_thread(timer, (1, 1)) thread.start_new_thread(timer, (2, 2)) if __name__ == '__main__': test() ``` 在这个例子中,`timer`函数是执行的任务,`start_new_thread`用于启动新线程,传递函数名和参数列表。`exit_thread`函数用于终止当前线程。 2. 类包装线程对象: Python的`threading`模块提供了更高级的线程管理功能,可以创建自定义的线程类。以下是一个使用`threading.Thread`的例子: ```python import threading import time class Timer(threading.Thread): # 定义一个继承自threading.Thread的Timer类 def __init__(self, num, interval): threading.Thread.__init__(self) self.thread_num = num self.interval = interval self.thread_stop = False def run(self): # 重写run()方法,指定线程要执行的任务 while not self.thread_stop: print('ThreadObject(%d), Time: %s\n' % (self.thread_num, time.ctime())) if __name__ == '__main__': t1 = Timer(1, 1) t2 = Timer(2, 2) t1.start() # 启动线程 t2.start() t1.join() # 等待t1线程结束 t2.join() # 等待t2线程结束 ``` 这个例子中,我们定义了一个名为`Timer`的线程类,通过`start`方法启动线程,`join`方法等待线程结束。 `threading.Thread`类提供了一些额外的功能,如线程同步(锁、条件变量等)、线程间通信(队列等)和线程优先级设置。相比于`thread`模块,`threading`模块更加推荐使用,因为它提供了更强大的功能和更好的异常处理机制。 Python的多线程编程允许开发者创建并发执行的任务,提高程序的执行效率。不过需要注意的是,由于GIL(全局解释器锁)的存在,Python的多线程在CPU密集型任务上并不能实现真正的并行计算,但在IO密集型任务中,多线程可以充分利用系统资源,提升程序性能。