2016-04-03 5 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() 

threadrunnerに** kwargsからの変数リストを渡すための最良の方法は何を( )?上記の例では、Version = Trueは、私が渡す必要があるkwargの1つのバージョンです。私が渡す必要があるすべてのkwargsは単純なTrue | Falseトグルです。

+1

私はあなたの問題を見ません。 'threadrunner'の' kwargs'はdictでなければなりません。 – 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() 
関連する問題