Почему потоки выдают пустой список?

Не знаю где именно ошибка, поэтому выложил весь код, он должен обрабатывать сообщения в gmail ящике, отсортировать и выдать в конце отсортированный массив. Поскольку ему нужно обрабатывать 25000 писем( на моем ящике именно столько) решил попробовать multiprocessing.После запуска потока вместо отсортированного списка выдает пустой массив, с 1 потоком все работает, но обрабатывает все слишком долго.

from __future__ import print_function
import pprint
import os.path
import pickle
from multiprocessing import Process, Value, Array

import multiprocessing

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# If modifying these scopes, delete the file token.json.
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']


def gmail_authenticate():
    creds = None
    # the file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first time
    if os.path.exists("token.pickle"):
        with open("token.pickle", "rb") as token:
            creds = pickle.load(token)
    # if there are no (valid) credentials availablle, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file('client.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # save the credentials for the next run
        with open("token.pickle", "wb") as token:
            pickle.dump(creds, token)
    return build('gmail', 'v1', credentials=creds)

# get the Gmail API service
service = gmail_authenticate()
'''
msgs = service.users().messages().list(userId='me',maxResults=50000).execute()


for msg in msgs['messages']:
    m_id = msg['id'] # get id of individual message
    message = service.users().messages().get(userId='me', id=m_id).execute()
    payload = message['payload']
    header = payload['headers']
    #print(header[0]['name'],' '.join(header[1]['value'].split()[6:11]))
    print(header[0]['name'],header[1]['value'])'''

messages = []
raw_mes = []
next_page_token = None
kolumn = 2
for _ in range(50):
    try:
        if next_page_token:
            msgs = service.users().messages().list(userId='me',maxResults=500, pageToken=next_page_token).execute()
        else:
            msgs = service.users().messages().list(userId='me',maxResults=500).execute()
        '''for msg in msgs['messages']:
            m_id = msg['id']  # get id of individual message
            message = service.users().messages().get(userId='me', id=m_id).execute()
            payload = message['payload']
            header = payload['headers']
            type_mes = header[0]['name']
            if type_mes == 'MIME-Version':
                data = header[1]['value']
                data = data.split()

                messages.append(['Исходяцее',' '.join(data[1:4])])

            else:
                messages.append(['Входящее',' '.join(header[1]['value'].split()[7:10])])'''
        raw_mes+=msgs['messages']

        next_page_token = msgs['nextPageToken']
    except:
        break
length = len(raw_mes)

m_id = [msg['id'] for msg in raw_mes]  # get id of individual message
def get_mes(messag,th):
    red_mes = []
    message = [service.users().messages().get(userId='me', id=m).execute() for m in messag]


    payload = [mess['payload'] for mess in message]
    head = [header['headers'] for header in payload]

    for hed in head:

        type_mes = hed[0]['name']

        if type_mes == 'MIME-Version':
            data = hed[1]['value']
            data = data.split()

            red_mes.append(['Исходяцее', ' '.join(data[1:4])])

        else:
            red_mes.append(['Входящее', ' '.join(hed[1]['value'].split()[7:10])])
        print(th)
    print(red_mes)
    return red_mes





if __name__ == '__main__':

    cpus = multiprocessing.cpu_count()
    if length % cpus == 0:
        pass
    proc_1 = Process(target=get_mes, args=(m_id[0:length//4],1,))#m_id[0:length//4

    proc_2 = Process(target=get_mes, args=(m_id[(length //4)*2:(length // 4)*3], 2,))

    proc_3 = Process(target=get_mes, args=(m_id[(length // 4)*3:(length // 4)*4], 4,))
    proc_2.start()
    print('2')
    proc_3.start()
    print('3')
    proc_1.start()
    print('1')
    get_mes(m_id[length//2:(length//2)*2],0)



Ответы (0 шт):