我正在开发一个查询存储设备的线程数据收集器。
我有以下线程运行方法:
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切换。
答案 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()