def surface_multiprocessing(args):
    """ A single surface calculation designed to be run in parallel

    Args:
      args: a tuple containing:
        spheres (Spheres): a Spheres object containing all surface producing objects
        probe_radius (float): radius to use for probe calculations
        kwargs (dict): all remaining arguments accepted by the surface calculation algorithm

    Returns:
      surface (Spheres): the input Spheres object but with calculated surface parameters

    """
    spheres, probe_radius, kwargs = args
    return spheres.calculate_surface(probe_radius=probe_radius, **kwargs)
