2012-03-31 10 views
1

私は、100,000のキーと値のような辞書のために以下のコードを使用しています...私はマルチプロセッシング/マルチスレッドを行うことでより速くしたいと思いました。誰がどのように適用し、その1(マルチプロセッシング/マルチスレッディング)を教えすることができますすることは自分のコードでマルチプロセッシング/マルチスレッドを使用するには?

from urlparse import urlparse 

ProcessAllURLs(URLs) 

ProcessAllURLs(URLs) 
def ProcessAllURLs(URLs): 
    for eachurl in URLs: 
      x=urlparse(eachurl) 
      print eachurl.netloc 

おかげ

答えて

1

私はPython's multiprocessing libraryをお勧めしますこの種のアプローチのために、より傾向があります。特に、the section labeled "Using a pool of workers"を研究してください。上記のコードを再加工して、システムのすべての使用可能なコアを使用できるようにするのはかなり速いはずです。

1つのヒント:ただし、プールワーカーのURLは印刷しないでください。メインプロセスへの回答を返信して、そこに集約して印刷する方がよいでしょう。異なるプロセスからの印刷は、混乱した、調整されていないコンソール出力をもたらすでしょう。

1

マルチプロセッシングライブラリはおそらくあなたの例にとって最適です。

from urlparse import urlparse 

nprocs = 2 # nprocs is the number of processes to run 
ParsePool = Pool(nprocs) 
ParsedURLS = ParsePool.map(urlparse,URLS) 

マップ機能は、内蔵のマップ機能と同じですが、各関数呼び出しのための独立したプロセスを実行します:それはあなたのコードがあることを書き換えることができようになります。

マルチプロセッシングの詳細については、http://docs.python.org/library/multiprocessing.htmlを参照してください。

関連する問題