并行创建嵌套字典

时间:2018-10-22 11:57:09

标签: python dictionary multiprocessing

我需要创建一个像这样的字典:

variables = {}
variables['throttle'] = {
    (e, i, h, t): xp.var(lb=0, vartype=xp.continuous)
                         for e in engine_list
                         for i in max_num_engine
                         for h in temp_levels
                         for t in all_timesteps
}
variables['flow'] = ...

其中len(timesteps)为16000,其他的长度介于3-5之间。我知道我可以用numpy作为矩阵来做到这一点,这会快得多,但是我需要字典结构以便以后(处理解决方案)。 xp是xpress软件包,是一个商业解决程序(具有强大的python支持以及功能和文档)

对dict的理解大约需要0.5-3秒,我需要执行60-100个(不是那么大),我可以以某种方式产生多个进程来并行创建一堆这些dict,然后合并它们吗?最好的方法是什么?每个键都略有不同,因此我不会遍历它们的创建。

1 个答案:

答案 0 :(得分:0)

我相信,您唯一可以优化的就是调用xp.var。理解本身(对于如此大量的数据)在中等性能的内核上需要200毫秒左右的时间(但总能很好地描述这一点)。

我在这里只能看到加快xp.var的速度。我无法在本地进行测试,但是请检查是否可以创建xp.var(lb=0, vartype=xp.continuous)并以理解的方式克隆它,而不是外部调用。