2017-08-16 85 views
1

我正在使用Pool使用starmap多线程程序来传递参数。在Python中使用Pool时将kwargs传递给starmap

我坚持,因为我似乎无法找到一种方法,通过kwargs与我传递的星图功能拉链阵列一起。

pool = Pool(NO_OF_PROCESSES) 
branches = pool.starmap(fetch_api, zip(repeat(project_name), api_extensions)) 

分支机构的要求是不完整的我仍然无法弄清楚如何通过关键字参数。

def fetch_api(project_name, api_extension, payload={}, headers={}, API_LINK=API_LINK, key=False): 
    headers[AUTH_STRING] = 'Gogo' 
    call_api = API_LINK + project_name + api_extension 
    response_api = requests.get(call_api, headers=headers, params=payload) 

    if key: return project_name + ':' + response_api 
    else: return response_api 

尽管主叫fetch_api()从分支线,我想通过有效载荷为{ 'A':1}和键=真。

请指导我的方向或答案。谢谢。使用Python 3.3+。

回答

0

如果kwargs是same.then可以使用functools.partial()

from functools import partial 

mapfunc = partial(fetch_api, payload= {'a':1}) 
map(mapfunc, zip()) 

否则,你只能使用pool.apply()