传递参数的Python线程

传递参数的Python线程,python,multithreading,Python,Multithreading,我试图向服务器传递一些参数,但不知道如何传递 这是我的代码: HOST, PORT = socket.gethostbyname( socket.gethostname() ), 31000 self.server = SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCRequestHandler ) ip, port = self.server.server_address self.server_thread = threa

我试图向服务器传递一些参数,但不知道如何传递

这是我的代码:

HOST, PORT = socket.gethostbyname( socket.gethostname() ), 31000
self.server = SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCRequestHandler )
ip, port = self.server.server_address        
self.server_thread = threading.Thread( target = self.server.serve_forever )
这是MCRequestHandler

class MCRequestHandler( SocketServer.BaseRequestHandler ):

    global Lidars, clientsLock, postbox
    Lidars = []
    postbox = {}
    clientsLock = threading.RLock()    

    def setup( self ):
        clientsLock.acquire()

如何将一个或两个参数传递给MCRequestHandler类?

我认为ThreadingCPServer的第二个参数是工厂:

  SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCRequestHandler )
你能做的就是在这里建立自己的工厂。类将连接一个可调用对象。调用该对象时,它将使用提供给工厂的参数初始化MCRequestHandler:

class MyRequestHandlerFactory(object):

  def __init__(self, param1, param2): 
            self.param1 = param1
            self.param2 = param2

  def __call__(self):
            handler = MCRequestHandler()
            handler.param1 = param1
            handler.param2 = param2
然后初始化:

  factory = MyRequestHandlerFactory("x", "y")
  SocketServer.ThreadingTCPServer( ( HOST, PORT ), factory)

我这样做了,但得到了这个错误。TypeError:\uuuu call\uuuu()接受1个位置参数,但提供了4个。有人知道原因是什么吗?@bronco:试试这个签名
def\uu call\uuuuuuuuo(self,*args,**kwargs)
并将args透明地传递给处理程序:
YourRequestHandler(*args,**kwargs)
如果我这样做,我会得到ConnectionResetError:[WinError 10054]远程服务器已强制关闭现有连接host@broncoAbierto:将
返回处理程序
添加到
调用
@J.F.Sebastian仍在抱怨arg计数(取3,4)。我发现这个ServerSocket框架中的线程有点奇怪。我想我会选择Twisted。