我有一个从字典中获取项目的功能:
def dict_lookup(dictionary, key):
return dictionary[key]
Run Code Online (Sandbox Code Playgroud)
我将通过多重处理映射此函数,以从一系列很长的字典中查找值:
dictlist = [{}, {}, {}]
dict_lookup_partial = functools.partial(dict_lookup, key=some_key)
with multiprocessing.Pool() as pool:
values = pool.map(dict_lookup_partial, dictlist)
Run Code Online (Sandbox Code Playgroud)
我觉得我不必定义一个函数来从字典中获取值。有一些内置的方法可以做到这一点吗?
标准库的操作符模块中的 itemgetter函数提供了以下行为:
>>> import multiprocessing as mp
>>> import operator
>>> dictlist = [{'a': 1, 'b':2, 'c': 10}, {'a': 3, 'b': 4, 'c': 20},
{'a': 5, 'b': 6, 'c': 30}]
>>> agetter = operator.itemgetter('a')
>>> with mp.Pool() as pool:
... avalues = pool.map(agetter, dictlist)
...
>>> avalues
[1, 3, 5]
Run Code Online (Sandbox Code Playgroud)
它还可用于检索多个键的值:
>>> bcgetter = operator.itemgetter('b', 'c')
>>> with mp.Pool() as pool:
... bcvalues = pool.map(bcgetter, dictlist)
...
>>> bcvalues
[(2, 10), (4, 20), (6, 30)]
Run Code Online (Sandbox Code Playgroud)
一般来说,操作符模块是第一个寻找复制内置函数行为以在map,filter或中使用的函数的地方reduce。
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |