2017-09-25 10 views
0

私はまだPythonを学んでいます。私には、このコードは正確にどのように「プールマッピング」を示す程度完全に明らかにされていませんhttps://docs.python.orgに動作します。そのは別々に分けてリスト[1、22、333]の各指標を差し込む...Pythonマルチプロセッシングpool.mapの説明

from multiprocessing import Pool 

def f(x): 
    return x*x 

if __name__ == '__main__': 
    numb_list = [1, 22, 333] 
    with Pool(5) as p: 
     print(p.map(f, numb_list)) 

ので、同じ機能のプロセスはすべて異なるコアで実行されていますか? もしそうなら、特定の反復についての詳細をどのように判断できますか?私は、リスト内の特定の要素の長さを知りたいと思ったので、私は関数を編集した場合 例[1、22、333]

def f(x): 
    if len(x) >= 3: 
     print("Big input") 
    return x*x 

プール機能を実行している各プロセスに一度にリスト全体を挿入しない、またはリストの一部?このように要素の長さをチェックすることはできますか? マップの代わりにforループを使用して、現在反復または要素が入力されているかどうかを区別する方法はありますか?それはほぼに等しい

+0

あなたは正しいです、それは別々のプロセスに各要素を別々に渡します。 –

+0

だから私は、現在のプロセスのリスト内の単一の要素でなければならないxの長さについて関数内で調べることができると推測しています。多くの人が並列プログラムをコーディングしていますか? –

+0

はい、そうでしょう。 –

答えて

0

from multiprocessing import Process 

results = [] 
for item in numb_list: 
    process = Process(target=f, args=(item,)) 
    process.start() 
    # insert process result in to results 

mapは、この反復可能なパラメータを展開し、各プロセスに各項目を送信します。

関連する問題