我想知道将共享参数传递给线程(例如输入队列)的最佳方法是性能。
我曾经将它们作为参数传递给__init__函数,因为这就是我在互联网上的大多数例子中所看到的。 但我想知道将它们设置为类变量是否会更快,是否有理由不这样做?
这就是我的意思:
class Worker(threading.Thread):
def __init__(self, in_q):
self.in_q = in_q
或:
class Worker(threading.Thread):
in_q = None
def __init__(self):
...
...
def main():
Worker.in_q = Queue.Queue()
答案 0 :(得分:2)
出于某种原因,类属性有时被称为“静态”。它们是静态模型结构的一部分,并讲述了类的内容。属性告诉运行时对象的某些内容。这不适用于您的情况。
例如,在某些时候,您可能希望拥有,例如两个独立的工作组并行运行,但共享不同的队列。具有静态属性的设计将阻止您这样做。基本上,这是一个略带伪装的全局变量,具有相同的缺点(隐式耦合,封装泄漏等)。