【发布时间】:2009-12-24 06:04:14
【问题描述】:
我需要在 Python 中使用 threading 模块同时运行 2 个服务器,但要调用函数 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()]
当我调用服务器类时,它会自动运行一个无限 while 循环。
那么如何同时运行 2 台服务器呢?
非常感谢您对 Fragsworth 的帮助,我刚刚测试了新结构并完美运行。 MainServer 和 DownloadServer 类继承自 threading.Thread 并在 run() 中运行无限循环。最后我按照你说的给服务器打电话。
【问题讨论】:
标签: python multithreading