Python 并发编程实战:多线程、多进程与线程池应用
在开发高性能应用时,如何充分利用系统资源是关键。Python 的并发编程主要涉及多线程和多进程两种模式,理解它们的适用场景及实现细节,能显著提升程序效率。
并发编程基础
并发编程允许程序同时执行多个任务,从而减少总运行时间并提高资源利用率。根据任务类型不同,选择策略也有所区别:
- CPU 密集型(如数学计算):受限于 GIL(全局解释器锁),更适合使用多进程。
- I/O 密集型(如网络请求、文件读写):线程切换开销小,多线程通常更高效。
多线程编程实践
创建与管理线程
使用 threading 模块可以方便地创建线程。下面是一个简单的示例,展示了如何启动并等待线程结束:
import threading
import time
def thread_function(name):
print(f'线程 {name} 开始')
time.sleep(2)
print(f'线程 {name} 结束')
# 创建线程
thread1 = threading.Thread(target=thread_function, args=('Thread 1',))
thread2 = threading.Thread(target=thread_function, args=('Thread 2',))
# 启动线程
thread1.start()
thread2.start()
# 等待线程结束
thread1.join()
thread2.join()
print('所有线程结束')
同步与互斥
当多个线程访问共享资源时,必须注意数据竞争问题。通过互斥锁(Lock)可以保证同一时刻只有一个线程修改资源。
import threading
import time
counter = 0
lock = threading.Lock()
def thread_function(name):
global counter
print(f'线程 {name} 开始')
# 获取锁
lock.acquire()
try:
counter += 1
()
:
lock.release()
time.sleep()
()
threads = []
i ():
thread = threading.Thread(target=thread_function, args=(,))
threads.append(thread)
thread.start()
thread threads:
thread.join()
()


