将kwargs传递给线程转换器方法的最佳方法

时间:2016-04-03 20:13:12

标签: python multithreading python-2.7

我正在开发一个查询存储设备的线程数据收集器。

我有以下线程运行方法:

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 个答案:

答案 0 :(得分: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()