如何在Python中同时运行两台服务器?

如何在Python中同时运行两台服务器?,python,multithreading,Python,Multithreading,我需要使用线程模块在Python中一次运行两台服务器,但要调用函数run(),第一台服务器正在运行,但第二台服务器直到第一台服务器结束才运行。 这是源代码: import os import sys import threading n_server = 0 n_server_lock = threading.Lock() class ServersThread(threading.Thread): def __init__(self): threading.Thre

我需要使用线程模块在Python中一次运行两台服务器,但要调用函数run(),第一台服务器正在运行,但第二台服务器直到第一台服务器结束才运行。
这是源代码:

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()]
当我调用server类时,它会自动运行一个无限while循环。
那么如何一次运行两台服务器呢



非常感谢您对Fragsworth的帮助,我刚刚测试了新结构,工作非常完美。MainServer和DownloadServer类继承自threading.Thread,并在run()内运行无限循环。最后,正如您所说,我调用了服务器。

您不想在
\uuuu init\uu
函数中加入
join()
。这会导致系统阻塞,直到每个线程完成

我建议您重组您的程序,使您的主要功能看起来更像以下内容:

if name == "__main__":
    servers = [MainServer(), DownloadServer()]
    for s in servers:
        s.start()
    for s in servers:
        s.join()        
也就是说,为
MainServer
DownloadServer
创建一个单独的线程类,然后让它们从主进程异步启动,然后加入