1

は私がmulitiprocessing作るための簡単な方法を使用しよう:この場合、Pythonでのマルチプロセッシングの使い方は?

urls = [1, 2, 3, 4] 
p = Pool(2) 
p.map(open, urls) 

open()は、計算を行う関数です。

def open(url): 
    print(url) 

私はprint(url)を行うと、それは私に奇妙な結果を返します:私は同じ計算をハンドラ・Pool(2)プロセスのそれぞれが間違っていると仮定することができます

1 
2 
3 
4 
1 
2 
3 
4 

を。私は、プロセス1は、取扱い及びプロセス2のため[1, 2]を取ることを必要とする

は、私は、これはあなたがしたい何をすべきだと思う[3, 4]

+0

あなたがチェックすることができこれはhttp://stackoverflow.com/questions/26520781/multiprocessing-pool-whats-the-difference-between-map-async-and-imapです。たぶん 'map'はあなたにとって同期がとれていないかもしれません。 –

+0

関数名として 'open'を使わないでください。これは組み込み関数です。また、あなたはWindowsでですか? – roganjosh

+0

このスレッドをチェックしてください:http://stackoverflow.com/questions/5442910/python-multiprocessing-pool-map-for-multiple-arguments – Peter234

答えて

0

を取ります

import multiprocessing 
def func(x): 
    return x[0] + x[1] 

if __name__ == "__main__":  
    p = multiprocessing.Pool(2) 
    for x in p.map(func, [(1, 2), (3, 4)]): 
     print(x) 

は出力:

3 
7 
関連する問題