Python 并发编程实战:多线程与多进程详解
一、并发编程基础
在开发高响应度的应用时,并发编程是绕不开的话题。简单来说,它允许程序同时执行多个任务,无论是线程还是进程,都能显著提升执行效率并充分利用系统资源。
1.1 核心优势与应用场景
并发编程的价值主要体现在三个方面:
- 提升效率:并行处理减少总运行时间。
- 资源利用:避免 CPU 或内存闲置。
- 结构优化:通过模块化设计简化复杂逻辑。
根据任务类型选择方案至关重要:CPU 密集型(如数学计算)适合多进程,而 I/O 密集型(如文件读写、网络请求)则更适合多线程。
二、多线程编程实践
2.1 线程的创建与管理
使用 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('所有线程结束')
2.2 同步与互斥机制
当多个线程访问共享资源时,必须防止数据竞争。这里使用互斥锁(Lock)来保护计数器。
import threading
import time
counter = 0
lock = threading.Lock()
def thread_function(name):
global counter
print(f'线程 {name} 开始')
lock.acquire()
try:
counter +=
()
:
lock.release()
time.sleep()
()
threads = []
i ():
thread = threading.Thread(target=thread_function, args=(,))
threads.append(thread)
thread.start()
thread threads:
thread.join()
()


