<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def preload(self, name, properties=None):
 """Pre-loads the requested properties for each object in the "name" attribute. :param name: The name of the attribute containing the list to preload. :type name: str :param properties: The properties to preload on the objects or the string all to preload all properties. :type properties: list or the string "all" """

        if properties is None:
            raise ValueError("You must specify some properties to preload. To"
                             " preload all properties use the string \"all\".")
        # Don't do anything if the attribute contains an empty list
        if not getattr(self, name):
            return

        mo_refs = []
        # Iterate over each item and collect the mo_ref
        for item in getattr(self, name):
            # Make sure the items are ManagedObjectReference's
            if isinstance(item, ManagedObject) is False:
                raise ValueError("Only ManagedObject's can be pre-loaded.")

            mo_refs.append(item._mo_ref)
            
        # Send a single query to the server which gets views
        views = self._client.get_views(mo_refs, properties)

        # Populate the inst.attr item with the retrieved object/properties
        self._cache[name] = (views, time.time())