开发者

Python threads passing parameters

开发者 https://www.devze.com 2023-03-14 04:16 出处:网络
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

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

精彩评论

暂无评论...
验证码 换一张
取 消