0

マルチプロセッシングのドキュメントを読みました。Pythonで、タスクを異なるCPUコアに割り当てることができることがわかりました。次のコードを (最初に) 並列で実行するのが好きです。

from multiprocessing import Process
import os

def do(a):
    for i in range(a):
        print i    

if __name__ == "__main__":
    proc1 = Process(target=do, args=(3,))
    proc2 = Process(target=do, args=(6,))
    proc1.start()   
    proc2.start()

今、私は出力を1 2 3、次に1 ....6として取得します。しかし、私は 1 1 2 2 として動作する必要があります。つまり、proc1 と proc2 を並行して (次々にではなく) 実行したいのです。

4

2 に答える 2

0

ライブラリ pp を使用することもできます。ネットワーク上の異なる CPU 間での並列処理が可能になるため、マルチプロセッシングよりも pp を好みます。関数 (func) は、単純なコードを使用して入力 (args) のリストに適用できます。

job_server=pp.Server(ncpus=num_local_procs,ppservers=nodes)
result=[job() for job in job_server.submit(func,input) for arg in args]

https://github.com/gopiks/mappy/blob/master/map.pyで他の例を確認することもできます。

于 2015-11-26T06:03:46.773 に答える