You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何全局可靠禁用sentence-transformers中的tqdm进度条?

解决SentenceTransformer批量编码时tqdm日志无法禁用的问题

可行方案汇总

  • 直接设置tqdm全局配置:在代码开头添加以下代码,直接覆盖tqdm核心配置,优先级高于环境变量,确保所有底层调用的tqdm都被禁用:

    from tqdm import tqdm
    tqdm._instances.clear()  # 清除现有进度条实例
    tqdm.disable = True  # 全局禁用所有tqdm输出
    
  • 通过SentenceTransformer参数控制:encode方法本身支持禁用进度条,调用时添加show_progress_bar=False参数即可:

    # 单文本调用时
    row = {'id': obj['id'],'embedding' : np.ndarray.tolist(model.encode(text, show_progress_bar=False))}
    

    推荐改用批量编码方式,既禁用进度条又提升效率:

    texts = [obj['text'] for obj in data]
    embeddings_list = model.encode(texts, show_progress_bar=False)
    embeddings = [{'id': data[i]['id'], 'embedding': np.ndarray.tolist(embeddings_list[i])} for i in range(len(data))]
    
  • 强制重定向tqdm输出:如果前两种方法无效,可通过重定向标准输出拦截tqdm日志:

    import sys
    from contextlib import redirect_stdout
    
    class NullIO:
        def write(self, msg):
            pass
    
    with redirect_stdout(NullIO()):
        embeddings = []
        for obj in data:
            text = obj['text']
            row = {'id': obj['id'],'embedding' : np.ndarray.tolist(model.encode(text))}
            embeddings.append(row)
    

环境变量TQDM_DISABLE失效原因

SentenceTransformer内部调用tqdm时,可能显式设置了disable参数或使用独立实例,导致全局环境变量被覆盖。部分版本的encode方法会强制启用进度条,忽略环境变量配置。

内容的提问来源于stack exchange,提问作者Adam Hughes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:51:02