Python threads passing parameters
I'm trying to passing some parameter to the server tread, but I have no idea how?
this is my code:
HOST, PORT = socket.gethostbyname( socket.gethostname() ), 31000
self.server = SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCReque开发者_如何学JAVAstHandler )
ip, port = self.server.server_address        
self.server_thread = threading.Thread( target = self.server.serve_forever )
this is the MCRequestHandler
class MCRequestHandler( SocketServer.BaseRequestHandler ):
    global Lidars, clientsLock, postbox
    Lidars = []
    postbox = {}
    clientsLock = threading.RLock()    
    def setup( self ):
        clientsLock.acquire()
How can I pass one or two parameter to the MCRequestHandler class?
I think the second parameter of ThreadingTCPServer is a factory:
  SocketServer.ThreadingTCPServer( ( HOST, PORT ), MCRequestHandler )
What you could do is your own factory here. Class will contstuct a callable object. when the object is called it will initialize MCRequestHandler with parameters given to the factory:
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
Then initialize:
  factory = MyRequestHandlerFactory("x", "y")
  SocketServer.ThreadingTCPServer( ( HOST, PORT ), factory)
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论