def mutli_scale( primary: Spectrum, speclist: Iterable[ Spectrum ], scale_wl: float = DEFAULT_SCALE_WL, scale_radius=DEFAULT_SCALE_RADIUS ) -> List[ Spectrum ]: """ Multiprocessing Spectrum.scale() method. Scales speclist members to that of the primary Spectrum, returning a list in the same order as it was provided. :param primary: Spectrum object to scale all speclist memebers to :type primary: Spectrum :param speclist: Iterable of Spectrum objects to scale to primary :type speclist: Iterable :param scale_wl: Wavelength at which to determine scale factor. Defaults to DEFAULT_SCALE_WL in common.constants :type scale_wl: float :param scale_radius: Radius at which to determine scale factor. Defaults to DEFAULT_SCALE_RADIUS :type scale_radius: float :return: List of scaled Spectrum objects :rtype: list """ from tools.async_tools import generic_ordered_multiprocesser scale_flux = primary.aveFlux( central_wl=scale_wl, radius=scale_radius ) inputV = [ (spec, scale_flux, scale_wl, scale_radius) for spec in speclist ] speclist = [ ] generic_ordered_multiprocesser( inputV, __multi_scale_wrapper, speclist ) return speclist