簡體   English   中英

Python線程傳遞參數

[英]Python threads passing parameters

我試圖將一些參數傳遞給服務器,但我不知道如何?

這是我的代碼:

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類?

我認為ThreadingTCPServer的第二個參數是工廠:

  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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM