2012-07-18 139 views
8

下面是在函數調用中使用關鍵字參數的一個簡單示例。沒什麼特別的。Python多處理關鍵字參數

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)] 

是否有可能將關鍵字參數傳遞給多處理過程?如果是這樣,怎麼樣?如果不是,爲什麼?

+1

你應該命名'kwargs' kwargs而不是'args'。 – kev 2016-08-01 00:42:58

回答

15

您用作關鍵字參數的字典應作爲kwargs參數傳遞給Process對象。

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

劃痕。得到它工作移動()以及。謝謝! – Jzl5325 2012-07-18 17:30:02