I assume you need to do this because you want to use different training data for the models? In that case, yes, that should be possible. I think you can wrap them with a wrapper module, sth like:
class WrapperModule(nn.Module):
    def __init__(self):
        super(WrapperModule, self).__init__()
        self.net0 = Net()
        self.net1 = Net()

    def forward(inputs):
        return [self.net0(inputs[0]), self.net1(inputs[1])]

net = WrapperModule()
opt = SomeOptimizer(net.parameters())
ddp = DistributedDataParallel(net)
ddp.forward(inputs).backward()
opt.step()