Como posso executar 2 servidores de uma só vez no Python?

Eu preciso executar dois servidores ao mesmo tempo em Python usando o módulo de segmentação, mas para chamar a função run (), o primeiro servidor está em execução, mas o segundo servidor não é executado até o final do primeiro servidor.
Este é o código fonte:

import os
import sys
import threading

n_server = 0
n_server_lock = threading.Lock()

class ServersThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.start()
        self.join()

    def run(self):
        global n_server, n_server_lock

        if n_server == 0:
            n_server_lock.acquire()
            n_server += 1
            n_server_lock.release()

            print(['MainServer'])

            # This is the first server class    
            main_server = MainServer()
        elif n_server == 1:
            n_server_lock.acquire()
            n_server += 1
            n_server_lock.release()

            print (['DownloadServer'])

            # This is the second server class
            download_server = DownloadServer()

if __name__ == "__main__":
    servers = []

    for i in range(2):
        servers += [ServersThread()]

Quando eu chamo a classe do servidor, ele executa automaticamente um loop while infinito.
Então, como posso executar 2 servidores de uma só vez?

Muito obrigado por sua ajuda Fragsworth, eu apenas testo a nova estrutura e trabalho perfeito. As classes MainServer e DownloadServer, herdam de threading.Thread e executam o loop infinito dentro de run (). Finalmente eu chamo os servidores como você disse.

questionAnswers(1)

yourAnswerToTheQuestion