def send(self, data, obs_next):
        '''
            Sends the current experiences to distributed replay buffer
            Args: 
                data: list of sub-trajectories collected
                obs_next: next observation
        '''
        obs, actions, rewards, dones, persistent_infos, infos = [], [], [], [], [], []
        hash_dict = {}
        nonhash_dict = {}
        onetime_infos = None
        for index, (ob, action, reward, done, onetime_info, persistent_info, info) in enumerate(data):
            # Store observations in a deduplicated way
            obs.append(ob)
            actions.append(action)
            rewards.append(reward)
            dones.append(done)
            infos.append(info)
            persistent_infos.append(persistent_info)
            if onetime_infos == None: onetime_infos = onetime_info

        hash_dict = {
            'obs': obs,
            'obs_next': obs_next
        }
        nonhash_dict = {
            'actions': actions,
            'onetime_infos' : onetime_infos,
            'persistent_infos': persistent_infos,
            'rewards': rewards,
            'dones': dones,
            'infos': infos,
            'n_step': len(data),
        }            
        self.sender.send(hash_dict, nonhash_dict)

            Sends the current experiences to distributed replay buffer
            Args: 
                data: list of sub-trajectories collected
                obs_next: next observation
        
surreal/env/exp_sender_wrapper.py