如何在Python中同时运行两台服务器?
我需要使用线程模块在Python中一次运行两台服务器,但要调用函数run(),第一台服务器正在运行,但第二台服务器直到第一台服务器结束才运行。如何在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
这是源代码:
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
创建一个单独的线程类,然后让它们从主进程异步启动,然后加入