-1

例えば:

instances = [ClassName() for i in range(no_inst)]
for data in dataset:
    for inst in instances:
        inst.dosomething(data)

注: インスタンスはデータを変更しないため、インスタンス間の通信は必要ありません。

4

2 に答える 2

2

私が知っている最も簡単な方法は、ビルトインを使用するのmultiprocessing.Pool.map同じ方法で使用することですmap。完了したいタスクを実行する関数を作成するだけで、すべての並列処理が処理されます。

import multiprocessing as mp

instances = [ClassName() for i in range(no_inst)]

def dosomething(inst):
    for data in dataset:
        inst.dosomething(data)

num_procs = 4 #however many processors you'll use
pool = mp.Pool(num_procs)
pool.map(dosomething,instances)

いくつかの落とし穴があります-たとえば、lambda関数はピクル化できないため、ここでは機能しません。これはNone(それが返されるので) のリストも返します - 通常、私はリスト内包表記や副作用のためにdosomethingリスト内包表記を使用するのは好きではありませんが、マルチプロセッシングに関しては、それがとても簡単であるという理由だけで、そのスタンスを緩めます。map

于 2013-05-18T02:02:34.477 に答える
0

threadingインターフェースを使用して、Threadを満たすクラスを作成できますdosomething(data)。ループごとに複数のスレッドを開始し、run()それらを開始するために呼び出すことができます。すべてが完了するまでステータスを確認できるように、それらをリストに入れることをお勧めします。

于 2013-05-18T01:56:32.130 に答える