使用线程初始化类(Python)

时间:2015-06-19 15:12:07

标签: python multithreading class python-2.7

所以我有这个代码

import socket
def main():
    #does a bunch of argument parsing
while True:
     newsock, fromaddr = s.accept()
     ssl_sock = context.wrap_socket(newsock, server_side=True)
     threading.Thread(target=tls_listener, args=(ssl_sock,)).start()

def tls_listener(ssl_sock):
     #the thing I want to turn into a class
     #calls other functions, does some reporting 



if __name__ == "__main__":
     main()

我想让tls_listener成为一个类(它已经增长了很多,我已经意识到我应该抽象它(并使用self而不是传递变量)),但我不知道如何开始使用线程的类的实例,因为它需要传递一个函数。我应该做点什么吗

class TlsListener(threading):
    #overload run()

或者是否可以让线程创建TlsListener类的新实例?

1 个答案:

答案 0 :(得分:1)

假设您希望每次接受套接字时都创建TlsListener类的新实例,您可以简单地保留代码,并在tls_listener函数内创建一个新类:< / p>

while True:
     newsock, fromaddr = s.accept()
     ssl_sock = context.wrap_socket(newsock, server_side=True)
     threading.Thread(target=tls_listener, args=(ssl_sock,)).start()

def tls_listener(ssl_sock):
    t = TlsListener()  # new instance of TlsListener class