解压缩字典字典参数,并在多处理池中使用** kwargs

时间:2019-11-16 04:12:09

标签: python-3.x multiprocessing python-multiprocessing kwargs

全部!

通常,如果我需要将字典作为参数集传递给函数,一种简单的方法是通过解压缩字典并使用它们。

pip3 install rasa-x --extra-index-url https://pypi.rasa.com/simple

我正在做一个需要很长时间的小项目。因此,我试图使用def some_function(a=0, b=0, **params): print(a) # 1 print(b) # 2 d = {"a":1, "b":2} some_function(**d) 来帮助我更快地完成工作。我简化了代码(如下)。

Multiprocessing

我想在相应的from multiprocessing import Pool from itertools import repeat import time def some_function(n, param1=0, param2=0): #some operation on n and **params print(n) print(param1) input_k = [i for i in range(1,10,2)] input_params = {'param1':1, 'param2':1} if __name__ == '__main__': with Pool(16) as p: k = p.starmap(some_function, zip(input_k, repeat(input_params))) ############## output ############## #1 #7 #9 #5 #3 #{'param1': 1, 'param2': 1} #{'param1': 1, 'param2': 1} #{'param1': 1, 'param2': 1} #{'param1': 1, 'param2': 1} #{'param1': 1, 'param2': 1} some_function上运行该input_k。但是该函数的输出不符合预期。看起来该函数采用了整个input_params字典,并在函数中将其分配给了input_params

我知道我在将字典传递给函数时没有解压缩字典,但是我不知道该怎么做(param1不允许我在{{ 1}})。我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:1)

我将您的代码修改为:

Assembly-CSharp.csproj

现在工作正常。