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

如何在不修改原文件时移除Python fitter库fit方法的进度条

移除Fitter类fit方法进度条的解决方案

因为无法修改只读的原模块文件,你可以用下面两种方法实现:

方法一:猴子补丁(Monkey Patching)

直接替换原类的fit方法,删掉进度条相关代码:

  1. 先写一个不带进度条的fit方法,逻辑和原方法完全一致,只是去掉tqdm_joblib的上下文:
def patched_fit(self, progress=False, n_jobs=-1, max_workers=-1):
    import warnings
    warnings.filterwarnings("ignore", category=RuntimeWarning)
    
    N = len(self.distributions)
    # 去掉进度条,直接执行并行任务
    from joblib import Parallel, delayed
    Parallel(n_jobs=max_workers, backend='threading')(
        delayed(self._fit_single_distribution)(dist) for dist in self.distributions
    )
    
    self.df_errors = pd.DataFrame(
        {
            "sumsquare_error": self._fitted_errors,
            "aic": self._aic,
            "bic": self._bic,
            "kl_div": self._kldiv,
            "ks_statistic": self._ks_stat,
            "ks_pvalue": self._ks_pval,
        }
    )
  1. 导入原Fitter类,替换它的fit方法:
from fitter import Fitter

# 替换原方法
Fitter.fit = patched_fit

之后再创建Fitter实例调用fit,就不会显示进度条了。

方法二:继承重写子类

创建一个继承自原Fitter的子类,重写fit方法去掉进度条:

from fitter import Fitter
from joblib import Parallel, delayed
import warnings
import pandas as pd

class NoProgressFitter(Fitter):
    def fit(self, progress=False, n_jobs=-1, max_workers=-1):
        warnings.filterwarnings("ignore", category=RuntimeWarning)
        
        N = len(self.distributions)
        # 直接跑并行任务,去掉进度条
        Parallel(n_jobs=max_workers, backend='threading')(
            delayed(self._fit_single_distribution)(dist) for dist in self.distributions
        )
        
        self.df_errors = pd.DataFrame(
            {
                "sumsquare_error": self._fitted_errors,
                "aic": self._aic,
                "bic": self._bic,
                "kl_div": self._kldiv,
                "ks_statistic": self._ks_stat,
                "ks_pvalue": self._ks_pval,
            }
        )

之后用NoProgressFitter代替原来的Fitter类就行。

注意点

  • 猴子补丁会全局修改原类的行为,所有用到Fitter的地方都会受影响;继承重写只影响你自己创建的子类实例,更稳妥。
  • 确保新的fit方法参数、返回值和原方法完全一致,避免出现兼容性问题。
  • 如果原模块后续更新了fit方法的逻辑,你需要同步更新补丁或子类的方法。

内容的提问来源于stack exchange,提问作者Jesus M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:07:34