1

私はよく、次のような単純な最適化ルーチンを作成します。

def createinstance(n):
    while(True):
        #create some instance called instance
        yield instance



loopno = 100000
n= 100
min = 0
for i in xrange(loopno):
    for inst in createinstance(n):
        value = foo(inst)
        if (value < min):
            min = value
            print min

これを行うために、マシンのすべてのコアを使用できるようにしたいと考えています。

非常に単純な方法は、範囲を部分に分割し、それらをコアにファームアウトして、最後に結果を収集するだけです.

より良い方法は、コアがアイドル状態のときにインスタンスのバッチを要求することです。

Pythonで最大の効率を得るためにこの問題を解決する良い方法は何ですか? たぶん、これはコミュニティの質問になるのに十分な標準ですか?

この質問は、 Solving embarassally parallel problems using Python multiprocessingのさらに単純なバージョンのようです。

4

1 に答える 1

0

標準の Python インストールに関しては、マルチプロセッシング モジュールが必要なようです。http://docs.python.org/2/library/multiprocessing.htmlの例は、あなたの場合。メモリが問題にならない場合は、プロセス間の通信がないため、単純に範囲を N 個のプロセッサに分割するのが最も効率的なオプションです。

MPI または SMP を使用して Python を並列化する方法はたくさんあるようです。python wiki http://wiki.python.org/moin/ParallelProcessingに潜在的な候補のリストがあります

Parallel Python http://www.parallelpython.comは SMP をサポートしています。これはおそらく、このインスタンス (マシンのクラスターではなく、単一のマシン、複数のプロセッサ) で必要なものです。

于 2013-02-14T11:57:27.297 に答える