我有一个服务器类,可以在客户端连接时创建线程。当客户端线程被启动时,它只是监听套接字并在套接字接收数据时调用OnData方法。这应该是一个基本的TCP服务器类,不同的类将来可以继承。子类只需要覆盖OnData方法。
我的问题是如何创建一个线程本地的成员变量?我希望每个线程都有自己的状态。
答案 0 :(得分:1)
让每个主题成为您的' ClientThread'的新实例。类。
这样,每个线程都有自己的成员变量,任何其他线程都无法访问它们。
E.g。
class ServerClass():
def make_new_thread(self, state):
new_thread = ClientThread(state)
new_thread.start()
class ClientThread(Thread):
local_state = None
def __init__(self, state):
self.local_state = state
def run(self):
do_some_stuff()
然后,您可以创建ServerClass实例化在运行时传入的内容的类。
答案 1 :(得分:0)
您可以将ID传递给每个帖子并从那里开始:
class foo(object):
def __init__(self, _id):
self._id = _id
setattr(self, '_foo_%s' % str(_id), {'your': 'state'})
现在每个对象都有一个唯一的字段(如果ID是唯一的):
>>> f1 = foo(1)
>>> f1._foo_1
{'your': 'state'}
>>> f1._foo_2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'foo' object has no attribute '_foo_2'
这有帮助吗?