def __getitem__(self, key):
        '''
        get an item and update its access time and pile position
        '''
        try:
            self._lock.acquire()
            self.prune()
            item = self._data[key]
            self._setNewest(item)
            return item.value

        finally:
            self._lock.release()

        get an item and update its access time and pile position
        
recipes/Python/498266_selfcleaning_dictlike_container_which_limits/recipe-498266.py