def METHOD_NAME(data, njobs, filt_shape=None):
    """
    :param data: numpy array (3d) of multi panel data
    :param njobs: number of processors to use
    :param filt_shape: shape of median filter used to extract background (default is 10,10, better is 20,20 but its slower)
    :return: background image, same shape as data
    """
    extracted_bg = np.zeros_like(data)
    if filt_shape is None:
        filt_shape = 10,10
    def get_bg(jid, njobs):
        bgs = {}
        for pid, p in enumerate(data):
            if pid % njobs != jid:
                continue
            bg = median_filter(p, filt_shape)
            if jid==0:
                print("processing panel %d / %d" % (pid, len(data)) )
            bgs[pid] = bg
        return bgs
    results = Parallel(n_jobs=njobs)(delayed(get_bg)(jid,njobs) for jid in range(njobs))
    for bgs in results:
        for pid in bgs:
            extracted_bg[pid]+= bgs[pid]
    return extracted_bg