ConvergenceWarnings cannot be turned off

Hi, I'm unable to turn off convergence warnings from `GraphicalLassoCV`.

I've tried most of the solutions from, and none of them worked (see below for actual implementations):
https://stackoverflow.com/questions/879173/how-to-ignore-deprecation-warnings-in-python
https://stackoverflow.com/questions/32612180/eliminating-warnings-from-scikit-learn/33812427#33812427
https://stackoverflow.com/questions/53968004/how-to-silence-all-sklearn-warning
https://stackoverflow.com/questions/14463277/how-to-disable-python-warnings

Contrary to what the designers of the sklearn's exceptions must have thought when it was implemented, some of us actually use stdout to log important information of the host program for diagnostics purposes.  Flooding it with garbage that cannot be turned off, as is in the case with cross-validation, is not ok. 

To briefly speak to the severity of the issue, the above sklearn-specific questions relating to suppressing warnings have been viewed ~500K times with combined ~400 upvotes, and dates back 7 years. 

I've tried the following (`n_jobs` parameter does not appear to affect the result):

```py
from sklearn.covariance import GraphicalLassoCV
import warnings
warnings.filterwarnings("ignore", category=ConvergenceWarning)

model = GraphicalLassoCV(n_jobs=4)
model = model.fit(data)
```

```py
from sklearn.covariance import GraphicalLassoCV
import warnings
warnings.filterwarnings(action='ignore')

model = GraphicalLassoCV(n_jobs=4)
model = model.fit(data)
```

```py
import warnings
with warnings.catch_warnings():
    warnings.simplefilter("ignore", ConvergenceWarning)

    model = GraphicalLassoCV(n_jobs=4)
    model = model.fit(data)
```

```py
from sklearn.covariance import GraphicalLassoCV
def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

model = GraphicalLassoCV(n_jobs=4)
model = model.fit(data)
```

```py
import contextlib
import os, sys

@contextlib.contextmanager
def suppress_stdout():
    with open(os.devnull, 'w') as fnull:
        old_stdout = sys.stdout
        sys.stdout = fnull
        try:
            yield
        finally:
            sys.stdout = old_stdout

with suppress_stdout():
    model = GraphicalLassoCV(n_jobs=4)
    model = model.fit(data)
```

```py
import logging
logging.captureWarnings(True)

logging.getLogger("py.warnings").setLevel(logging.ERROR)

model = GraphicalLassoCV(n_jobs=4)
model = model.fit(data)
```

COMMENT:
Hmmm looking at SO myself, it seems like indeed this is subprocesses with joblib, see [this answer](https://stackoverflow.com/a/72807161).

Basically `warnings` filters only applied to the main process and not the subprocesses. One proposed solution in the SO answer is to:
- use `warnings.simplefilter` for the warnings in the main process
- set the environment variable `PYTHONWARNINGS` for the warnings in the subprocesses launched by joblib

@u3Izx9ql7vW4 can you confirm this fixes the issue for you?

In an ideal world, you would not need this work-around. In our imperfect world, I don't really know if there is some magic we can do in joblib and/or loky to have the subprocesses inherit the warnings filters from the main process ...

In any cases this should be an issue in joblib I think: I opened https://github.com/joblib/joblib/issues/1591.

An alternative may actually be to use our already existing joblib wrappers like delayed to apply the warning filters to subprocesses, not sure how doable this is and that would be scikit-learn specific.

Labels: Moderate, help wanted