通过多处理传递 python 参数字典
Passing python dictionary of parameters though multiprocessing
我有一本字典,其中存储了参数字典。我想要做的是使用 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 multiprocessing for each key in dictionary"Python multiprocessing for each key in dictionary") 找到了一些信息,但我无法将其实现到我的代码中。
我在 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()
我有一本字典,其中存储了参数字典。我想要做的是使用 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 multiprocessing for each key in dictionary"Python multiprocessing for each key in dictionary") 找到了一些信息,但我无法将其实现到我的代码中。
我在 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()