Necesito ejecutar 2 servidores a la vez en Python usando el módulo de threading, 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:¿Cómo puedo ejecutar 2 servidores a la vez en Python?
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 de servidor, se ejecuta automáticamente un bucle while.
Entonces, ¿cómo puedo ejecutar 2 servidores a la vez?
Muchas gracias por su ayuda Fragsworth, acabo de probar la nueva estructura y el trabajo perfecto. Las clases MainServer y DownloadServer, heredan de threading.Thread y ejecutan el bucle infinito dentro de run(). Finalmente llamo a los servidores como dijiste.