执行多重处理池时跟踪字典中的值

时间:2019-01-25 21:39:29

标签: python-3.x dictionary multiprocessing

以下是代码示例:

    my_dict = {}
    for elem in some_file.my_dict:
        my_dict[elem] = my_dict.get(elem, {'value1': 0, 'value2': 'UP'})
    static_var = generate_static_var()

    pool = Pool(processes = 99)
    chunks = [(static_var, list(my_dict)[i::99]) for i in range(99)]

    failed_responses = pool.map(generate_separate_var, chunks)

池中的第一个进程很好,因为在第一个进程完成之前本地字典不会有所不同。但是,由于我正在执行多处理池,因此有99个线程同时运行,因此第一个进程完成后返回的值将被第99个进程完成丢失。有没有一种方法可以确保您不会丢失每个过程完成后返回的值?

1 个答案:

答案 0 :(得分:0)

为了使Pool.map()正常工作,映射中使用的函数应采用一个参数(可以是数据结构),仅基于该输入进行 计算,然后返回一个结果(也可能是数据结构)。

以这种方式进行编程时,给定函数将可迭代的输入“映射”为可迭代的结果。