Creation of many data module instances incurs RecursionError
🐛 Bug
Thank you for a nice framework!
When I repeated hundreds of experiments, each time with a new instance of a single LightningDataModule class, RecursionError was raised. I also found that creating data modules and calling setup() were enough to reproduce the issue.

To Reproduce
Please look at the following code sample and error messages:

Code sample
import pytorch_lightning as pl

class DummyDM(pl.LightningDataModule):
    def setup(self, stage=None):
        pass

if __name__ == "__main__":
    MAX_ITERS = 1000
    for i in range(MAX_ITERS):
        try:
            dm = DummyDM()
            dm.setup()
        except RecursionError:
            print(f"RecursionError occured in the {i}-th iteration!")
            raise

Error messages
RecursionError occured in the 998-th iteration!
Traceback (most recent call last):
  File "test_dm.py", line 18, in <module>
    dm.setup()
  File "/workspace/src/.venv/lib/python3.8/site-packages/pytorch_lightning/core/datamodule.py", line 85, in wrapped_fn
    return fn(*args, **kwargs)
  File "/workspace/src/.venv/lib/python3.8/site-packages/pytorch_lightning/core/datamodule.py", line 85, in wrapped_fn
    return fn(*args, **kwargs)
  File "/workspace/src/.venv/lib/python3.8/site-packages/pytorch_lightning/core/datamodule.py", line 85, in wrapped_fn
    return fn(*args, **kwargs)
  [Previous line repeated 995 more times]
  File "/workspace/src/.venv/lib/python3.8/site-packages/pytorch_lightning/core/datamodule.py", line 69, in wrapped_fn
    if fn.__name__ == 'setup':
RecursionError: maximum recursion depth exceeded in comparison


Expected behavior
The above code sample is expected to exit without any outputs.
Environment

PyTorch Version (e.g., 1.0): 1.6.0
PytorchLightning Version: 0.9.0
OS (e.g., Linux): Linux
How you installed PyTorch (conda, pip, source): pip
Build command you used (if compiling from source): n/a
Python version: 3.8.2
CUDA/cuDNN version: 10.2
GPU models and configuration: 1080Ti