我有将新客户端运行到新线程的脚本
thread1 = threading.Thread(target=loop_logic,args=(client1,))
thread2 = threading.Thread(target=loop_logic,args=(client2,))
并且它们始终以True
条件
我的脚本是server.py
然后我想让client.py
在运行时向server.py
添加新线程,这样当我执行client.py
时它会添加:
thread3 = threading.Thread(target=loop_logic,args=(client3,))
等等。 我可以用什么方法来做这件事?
答案 0 :(得分:0)
您可以为客户端和服务器创建一个类,将对服务器的引用传递给每个新客户端,并添加一个用于为服务器类创建新客户端的函数。这是一个非常基本的例子
import threading
class Server(object):
def __init__(self):
self.chilren = []
self.threads = []
def NewChild(self, client_info):
child = Client(self, client_info) # self is a reference to the current server instance
child_thread = threading.thread(target=child.run, args=(,))
self.children.append(child)
self.threads.append(child_thread)
child_thread.start()
def run(self):
pass
# Whatever server code should go here
class Client(object):
def __init__(self, parent, info): # info is a stand-in for arguments
self.parent = parent
self.info = info
def run(self):
self.parent.NewChild(other_info)
# Any other processing too
在此示例中,logic_loop
替换为Client.run
方法。在该函数中完成的任何处理都将在run
中进行,并且任何参数都将作为info
参数传递给类