【问题标题】:Is it possible to parallelise creation of a dict in python?是否可以在 python 中并行创建字典?
【发布时间】:2020-06-20 13:30:52
【问题描述】:

我实际上有这个代码来创建一个字典。

import multiprocessing
cpus = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes=cpus)
items = data['id'].unique()

def compute_weight(item):
    return sum(data[data['id'] == item])
weights = pool.map(compute_weight, items)

my_dict = {k, v for k, v in zip(items, weights)}

我的问题是:有没有办法通过多处理直接创建字典?

【问题讨论】:

  • 为什么要使用多处理?改用更好的数据结构/算法不是更好吗?

标签: python dictionary multiprocessing


【解决方案1】:

不,但你不需要循环。

使用

my_dict = dict(zip(items, weights))

这应该会更快,因为它将循环向下推到 C 级别(在 CPython 的情况下)

【讨论】:

  • python -m timeit -s "a=range(1000)" "dict(zip(a, a))" 一样尝试过,速度提高了大约 1.4 倍。
猜你喜欢
  • 2011-11-09
  • 1970-01-01
  • 2022-01-10
  • 2023-04-06
  • 2017-12-06
  • 2019-08-07
  • 2013-02-02
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多