My dataset for training Pytorch model needs plenty of I/O to generate, so I hope the program will use only 1 process to generate it, and this is my code: import torch.multiprocessing as mp # world_size is GPUs' num mp.spawn(train_worker, args=(world_size, config_data), nprocs=world_size, join=True) def train_worker(rank, world_size, cfgs): trainer = MyDistributedTask(rank, world_size, cfgs) trainer.run() class MyDistributedTask(): def make_dataset(self, is_tra_val_te: str): # Use process 0 to generate dataset if self.rank == 0: data_cfgs = self.cfgs["data_cfgs"] dataset = MyDataset(data_cfgs, is_tra_val_te) return dataset However, MyDataset generated in process 0 is not sent to other processes, so how can I share MyDataset among processes? And I don't want to use mp.Lock because it will make program slower and make polars appear deadlock mistakes. Thank for your reply. Continue reading...