That’s a very good point. In my use case, I don’t leverage multi-threading or multi-processing, so even if Dataset.__getitem__ mutate the data, e.g., creating cache, it won’t affect iterating of 2 DataLoaders on top it (which might iterate in turn).