macOS下导入sentence_transformers挂起及mutex锁阻塞问题排查
macOS下sentence_transformers导入死锁问题
问题描述
在macOS系统中,导入sentence_transformers库会导致Python脚本无限挂起,仅输出底层mutex锁阻塞错误,脚本无法通过Ctrl+C终止,只能强制退出终端或进程。
错误信息:
[mutex.cc : 452] RAW: Lock blocking 0x11b3e1888 @
背景
该问题始于尝试用Python的asyncio库并发运行sentence-transformers任务后,代码结构示例如下:
import asyncio # from sentence_transformers import SentenceTransformer # 此导入现在出现问题 # model = SentenceTransformer('all-MiniLM-L6-v2') # 示例模型加载 async def process_with_tracking(org_data): # 最终会使用模型的一些处理逻辑 # e.g., model.encode(org_data['text']) pass async def main(): orgs = [...] # 数据对象列表 tasks = [] # 为每个数据对象创建任务 for org in orgs: task = asyncio.create_task(process_with_tracking(org)) tasks.append(task) # 等待所有任务完成 if tasks: await asyncio.gather(*tasks, return_exceptions=True) # asyncio.run(main())
推测是之前的并发执行导致sentence-transformers或其依赖(如Hugging Face Transformers、PyTorch)的共享资源/缓存文件出现死锁或损坏。
核心问题
问题已扩散至全系统,即使不使用asyncio或任何并发机制也会触发。仅包含导入语句的极简脚本即可导致挂起:
test_import.py
print("Attempting to import sentence_transformers...") import sentence_transformers print("Import successful!") # 该行永远无法执行
运行python test_import.py时,脚本在第一个打印语句后挂起,并输出上述[mutex.cc]错误。
已尝试操作
- 重启电脑:问题仍存在
- 重装库:多次执行
pip uninstall sentence-transformers和pip install sentence-transformers - 运行极简脚本:确认仅导入语句即可触发挂起,排除asyncio代码为直接触发因素
疑问
- 是什么导致这种重装库和重启后依然存在的持续锁问题?
- sentence-transformers或Hugging Face transformers在macOS上的缓存、配置或锁文件存储位置在哪里?能否手动检查或删除这些文件(例如~/.cache/huggingface/)?
- 底层tokenizer并行机制(tokenizers)在macOS上是否存在已知问题会导致这种状态?如何重置它?
环境
- 操作系统:macOS
- Python版本:3.10
内容的提问来源于stack exchange,提问作者Akash Dubey
相关产品推荐
相关产品推荐

