python threading - 将参数传递给线程的最佳方法

时间:2014-01-29 11:32:19

标签: python multithreading

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

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

1 个答案:

答案 0 :(得分:2)

出于某种原因,类属性有时被称为“静态”。它们是静态模型结构的一部分,并讲述了类的内容。属性告诉运行时对象的某些内容。这不适用于您的情况。

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