[DataLoader] add repr for WorkerInfo (#39975)
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/39975
Differential Revision: D22039414
Pulled By: ezyang
fbshipit-source-id: 230f68a91fca901bce652fdf88ba88167f39b978
diff --git a/test/test_dataloader.py b/test/test_dataloader.py
index a5fa18d..6b60208 100644
--- a/test/test_dataloader.py
+++ b/test/test_dataloader.py
@@ -320,8 +320,6 @@
set_faulthander_if_available()
# Process `pid` must have called `set_faulthander_if_available`
-
-
def print_traces_of_all_threads(pid):
if HAS_FAULTHANDLER:
if not IS_WINDOWS:
@@ -666,6 +664,8 @@
worker_info.a = 3
except RuntimeError as e:
assert str(e) == "Cannot assign attributes to WorkerInfo objects"
+ for k in ['id', 'num_workers', 'seed', 'dataset']:
+ assert "{}=".format(k) in repr(worker_info)
dataset.value = [worker_id, os.getpid()]
diff --git a/torch/utils/data/_utils/worker.py b/torch/utils/data/_utils/worker.py
index 49d4417..b538129 100644
--- a/torch/utils/data/_utils/worker.py
+++ b/torch/utils/data/_utils/worker.py
@@ -63,6 +63,7 @@
def __init__(self, **kwargs):
for k, v in kwargs.items():
setattr(self, k, v)
+ self.__keys = tuple(kwargs.keys())
self.__initialized = True
def __setattr__(self, key, val):
@@ -70,6 +71,12 @@
raise RuntimeError("Cannot assign attributes to {} objects".format(self.__class__.__name__))
return super(WorkerInfo, self).__setattr__(key, val)
+ def __repr__(self):
+ items = []
+ for k in self.__keys:
+ items.append('{}={}'.format(k, getattr(self, k)))
+ return '{}({})'.format(self.__class__.__name__, ', '.join(items))
+
def get_worker_info():
r"""Returns the information about the current