¿Cómo puedo ejecutar 2 servidores a la vez en Python?

Necesito ejecutar 2 servidores a la vez en Python usando el módulo de subprocesos, pero para llamar a la función run (), el primer servidor se está ejecutando, pero el segundo servidor no se ejecuta hasta el final del primer servidor.
Este es el código fuente:

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()] 

Cuando llamo a la clase del servidor, se ejecuta automáticamente un bucle infinito.
Entonces, ¿cómo puedo ejecutar 2 servidores a la vez?


Muchas gracias por su ayuda, Fragsworth, acabo de probar la nueva estructura y trabajar a la perfección. Las clases MainServer y DownloadServer, heredan de threading.Thread y ejecutan el bucle infinito dentro de run (). Finalmente llamo a los servidores como dijiste.

No quieres join() en tu función __init__ . Esto hace que el sistema se bloquee hasta que finalice cada subproceso.

Le recomendaría que reestructure su progtwig para que su función principal se parezca más a la siguiente:

 if name == "__main__": servers = [MainServer(), DownloadServer()] for s in servers: s.start() for s in servers: s.join() 

Es decir, cree una clase de subproceso separada para su MainServer y DownloadServer , luego haga que comiencen de forma asíncrona desde el proceso principal y luego se unan.