Python Multi Thread在单独的脚本上

时间:2017-08-22 19:40:31

标签: python multithreading python-2.7

我有将新客户端运行到新线程的脚本

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,))

等等。 我可以用什么方法来做这件事?

1 个答案:

答案 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参数传递给类