14

这是一个在函数调用中使用关键字参数的简单示例。没什么特别的。

def foo(arg1,arg2, **args):
    print arg1, arg2
    print (args)
    print args['x']

args ={'x':2, 'y':3}
foo(1,2,**args)

正如预期的那样打印:

1 2
{'y': 3, 'x': 2}
2

我正在尝试将相同样式的关键字参数传递给多处理任务,但是在 args 列表中使用 ** 是语法错误。我知道我的函数stretch() 将采用两个位置参数和n 个关键字参数。

pool = [multiprocessing.Process(target=stretch, args= (shared_arr,slice(i, i+step),**args)) for i in range (0, y, step)]

是否可以将关键字参数传递给 multiprocessing.Process?如果是这样,怎么做?如果不是,为什么?

4

1 回答 1

21

您用作关键字 args 的字典应作为kwargs参数传递给Process对象。

pool = [multiprocessing.Process(target=stretch, args= (shared_arr,slice(i, i+step)),kwargs=args) for i in range (0, y, step)]
于 2012-07-18T17:26:36.377 回答