一、passlib
常用于加密密码。
security.py
frompasslib.contextimportCryptContext# 创建密码上下文pwd_context=CryptContext(schemes=["bcrypt"],deprecated="auto")# 密码加密defget_hash_password(password:str):returnpwd_context.hash(password)# 密码验证:verify 返回值是布尔型defverify_password(plain_password,hashed_password):returnpwd_context.verify(plain_password,hashed_password)二、joblib
joblib 是一个用于 Python 的轻量级流水线工具集,joblib 在科学计算和机器学习领域应用广泛,是 scikit-learn 的核心依赖之一。专注于以下三大核心功能:
- 并行计算:简单易用的多进程/多线程并行框架
- 对象持久化:高效地序列化大型 Python 对象(尤其是 NumPy 数组)
- 结果缓存:基于磁盘的函数返回值缓存(memoization)
pipinstalljoblib对象持久化(dump / load)
joblib 提供了比 pickle 更高效的序列化方式,特别适合包含大型 NumPy 数组的对象。
保存与加载模型
fromjoblibimportdump,loadimportnumpyasnp# 创建一个示例对象model={'weights':np.random.rand(1000,1000),'name':'demo_model','version':1.0}# 保存到磁盘dump(model,'model.joblib')# 从磁盘加载loaded_model=load('model.joblib')print(loaded_model['name'])# 输出: demo_model使用压缩
fromjoblibimportdump,loadimportnumpyasnp big_array=np.random.rand(10000,100)# 不压缩(速度快、文件大)dump(big_array,'data.joblib')# 使用压缩(文件小、速度稍慢)dump(big_array,'data_compressed.joblib',compress=3)# 压缩级别 0-9# 指定压缩算法dump(big_array,'data.joblib.gz',compress=('gzip',3))dump(big_array,'data.joblib.lz4',compress=('lz4',3))