2014-01-29 90 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

類屬性有時被稱爲 「靜態」 的一個原因。它們是靜態模型結構的一部分,並講述有關類的一些內容。屬性在運行時顯示有關對象的信息。這不適用於你的情況。

例如,在某些時候,你可能想要有,例如,兩個不同的工作組並行運行,但共享不同的隊列。具有靜態屬性的設計將阻止你這樣做。基本上,這是一個輕微僞裝的全球變量,具有相同的缺點(隱式耦合,封裝泄漏等)。