繁体   English   中英

通过多处理传递python参数字典

[英]Passing python dictionary of parameters though multiprocessing

我有一本字典,其中存储有参数字典。 我要做的是使用多重处理将参数字典传递给函数。 这就是我想要的样子:

from multiprocessing import Pool

# Dictionary with dictionaries of parameters:
my_dict = {"one":{"parm1":1, "parm2":2, "parm3":3}, "two":{"parm1":4, "parm2":5, "parm3":6}, "three":{"parm1":7, "parm2":8, "parm3":9}}

def function(parm1, parm2, parm3):  # Function that is called during multiprocessing.
    print(parm1, parm2, parm3)
    print(parm1 * parm2 * parm3)

def store_info(a):  # The callback function.
    print(a)

p = Pool(4)  # Setting up the number of CPU's to use.

for key, value in my_dict.items():  # For loop used to separate keys from values.
    print(value)
    data = p.map_async(function, **value, callback=store_info)

我用**value表示我希望通过函数传递字典中的那些值。 我知道不能在那里特别使用它。

我的问题:如何通过多处理传递参数字典?

我在此处找到了一些信息( 字典中每个键的 Python多重处理“ 字典中每个键的 Python多重处理”),但是我无法在我的代码中实现它。

我在Mac OS Yosemite上使用Python 3.4。

您正在滥用map_async您想改用apply_async

from multiprocessing import Pool

def function(parm1, parm2, parm3):  # Function that is called during multiprocessing.
    print parm1, parm2, parm3
    print parm1 * parm2 * parm3
    return parm1 * parm2 * parm3

def store_info(a):  # The callback function.
    print a

if __name__ == "__main__":
    # Dictionary with dictionaries of parameters:
    my_dict = {"one":{"parm1":1, "parm2":2, "parm3":3}, "two":{"parm1":4, "parm2":5, "parm3":6}, "three":{"parm1":7, "parm2":8, "parm3":9}}

    p = Pool(4)  # Setting up the number of CPU's to use.

    for key, params_dict in my_dict.items():  # For loop used to separate keys from values.
        print params_dict
        p.apply_async(function, args=tuple(), kwds=params_dict, callback=store_info)

    p.close()
    p.join()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM