3.5.实现细节
多线程同步机制
1. Lock(锁)
import threading
lock = threading.Lock()
# 在多线程修改共享变量时使用
with lock:
shared_variable = new_value # 安全操作
2. Queue(队列)
from queue import Queue
q = Queue(maxsize=1) # 线程安全的队列
# 生产者线程
q.put(data)
# 消费者线程
data = q.get(timeout=1) # 1秒超时
3. Event(事件)
import threading
event = threading.Event()
# 线程 1:等待事件
event.wait() # 阻塞直到事件被设置
# 线程 2:设置事件
event.set()
# 清除事件
event.clear()
异常处理模式
try:
# 可能出错的代码
result = network_call()
except Timeout:
# 网络超时
logging.error("请求超时")
except ConnectionError:
# 连接错误
logging.error("连接失败")
except Exception as e:
# 其他所有异常
logging.error(f"未知错误: {e}")
traceback.print_exc() # 打印堆栈
finally:
# 无论是否异常,都会执行
cleanup_resources()
流式处理模式
# 生成器:一个一个产生数据,不一次性加载全部
def stream_data():
for chunk in data_chunks:
yield chunk
# 使用生成器
for chunk in stream_data():
process(chunk) # 立即处理,无需等待全部数据