2014-01-29 92 views
2

我想知道将共享参数传递给线程(例如输入队列)的最佳方法是性能。python线程 - 将参数传递给线程的最佳方式

我曾经将它们作为参数传递给__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

第一种方法稍后会更容易理解和维护。 – bereal

+0

第二种方式在所有工人实例之间共享相同的队列。第一种方式可以让你做到这一点,但也不会这样做,如果你想.. – wim

回答

2

类属性有时被称为 “静态” 的一个原因。它们是静态模型结构的一部分,并讲述有关类的一些内容。属性在运行时显示有关对象的信息。这不适用于你的情况。

例如,在某些时候,你可能想要有,例如,两个不同的工作组并行运行,但共享不同的队列。具有静态属性的设计将阻止你这样做。基本上,这是一个轻微伪装的全球变量,具有相同的缺点(隐式耦合,封装泄漏等)。