多线程与多进程
Python通过threading
和multiprocessing
模块实现并发。多线程适合I/O密集型任务(如网络请求、文件读写),而多进程适用于CPU密集型计算(如数值处理)。
- 多线程:使用
threading.Thread
创建线程,注意GIL限制导致多线程无法真正并行执行 - 多进程:通过
multiprocessing.Process
启动进程,可充分利用多核CPU - 📌 提示:避免在多线程中共享可变状态,使用
queue
模块进行线程间通信
异步编程(AsyncIO)
Python 3.4引入asyncio
库,支持协程(coroutine)和异步IO操作。使用async/await
语法实现非阻塞调用:
import asyncio
async def fetch_data():
await asyncio.sleep(1)
return "数据"
async def main():
result = await fetch_data()
print(result)
asyncio.run(main())
- ✅ 异步编程优势:提高IO密集型任务效率
- ⚠️ 注意事项:需合理设计事件循环,避免过多协程导致资源耗尽
并发工具库
掌握以下工具能更高效地实现并发:
- concurrent.futures:提供线程池和进程池的高级接口
- asyncio:用于编写单线程并发代码
- multiprocessing.Pool:管理多个进程的并行任务
- threading.Lock/RLock:处理线程间的同步问题
性能优化技巧
- 使用
multiprocessing
替代多线程处理CPU密集型任务 - 为异步任务设置超时机制防止阻塞
- 合理控制并发数量,避免资源竞争
- 📈 监控线程/进程状态,使用
psutil
进行系统资源分析