2016-04-03 82 views
0

我正在開發一個查詢存儲設備的線程數據收集器。將kwargs傳遞給線程運行方法的最佳方法

我有以下螺紋的流道方法:

def threadrunner(cfg, filer, APPLIANCES, kwargs): 

    _client = login(cfg, filer) 
    _filer = DeviceConfig(_client, Version=True) 
    APPLIANCES.append(_filer) 

並調用它的代碼:

newthr = threading.Thread(target=threadrunner, args=(cfg, appliance, APPLIANCES, kwargs)) 
    newthr.name = appliance 
    newthr.start() 

什麼是通過** kwargs到threadrunner的變量列表(最好的辦法)?在上面的例子中,Version = True是我需要傳遞的一個kwarg版本。所有需要通過的kwargs都是簡單的True | False切換。

+1

我不明白你的問題。 'threadrunner'中的'kwargs'應該是一個字典。 – HuStmpHrrr

回答

3

您可以通過kwargs關鍵字

你可以做這樣的事情:

def threadrunner(*args, **kwargs): 

    _client = login(*args) 
    if 'APPLIANCES' not in kwargs: 
     raise ValueError('Appliances not in kwargs') 
    APPLIANCES = kwargs.pop('APPLIANCES', None) 

    #Assuming your boolean values go here. 
    _filer = DeviceConfig(_client, **kwargs) 
    APPLIANCES.append(_filer) 

newthr = threading.Thread(target=threadrunner, args=(cfg, appliance,) kwargs={'APPLIANCES': APPLIANCES, 'boolkey1':boolval1, ....) 
newthr.name = appliance 
newthr.start() 
相關問題