5

Python(ubuntu)で並列プロセスを実行しようとしています。

マルチプロセッシングを使い始めたところ、単純な例ではうまくいきました。
その後、ピクルエラーが発生したため、パトスに切り替えました。さまざまなオプションに少し混乱したので、非常に単純なベンチマーク コードを作成しました。

import multiprocessing as mp
from pathos.multiprocessing import Pool as Pool1
from pathos.pools import ParallelPool as Pool2
from pathos.parallel import ParallelPool as Pool3
import time

def square(x):  
    # calculate the square of the value of x
    return x*x

if __name__ == '__main__':

    dataset = range(0,10000)

    start_time = time.time()
    for d in dataset:
        square(d)
    print('test with no cores: %s seconds' %(time.time() - start_time))

    nCores = 3
    print('number of cores used: %s' %(nCores))  


    start_time = time.time()

    p = mp.Pool(nCores)
    p.map(square, dataset)

    # Close
    p.close()
    p.join()

    print('test with multiprocessing: %s seconds' %(time.time() - start_time))


    start_time = time.time()

    p = Pool1(nCores)
    p.map(square, dataset)

    # Close
    p.close()
    p.join()

    print('test with pathos multiprocessing: %s seconds' %(time.time() - start_time))


    start_time = time.time()

    p = Pool2(nCores)
    p.map(square, dataset)

    # Close
    p.close()
    p.join()

    print('test with pathos pools: %s seconds' %(time.time() - start_time))


    start_time = time.time()

    p = Pool3()
    p.ncpus = nCores
    p.map(square, dataset)

    # Close
    p.close()
    p.join()

    print('test with pathos parallel: %s seconds' %(time.time() - start_time))


- プレーン シリアル コードで 0.001 秒、パラレルなし、
-multiprocessingオプションで0.100 秒、 - で 0.100 秒、 -
で 4.470 秒pathos.multiprocessing、 - でエラー
pathos.pools
AssertionErrorpathos.parallel

これらのさまざまなオプションの使用方法をhttp://trac.mystic.cacr.caltech.edu/project/pathos/browser/pathos/examples.htmlからコピーしました

このような単純な例では、並列処理は単純なシリアル コードよりも長くなることがわかります。私が理解していないのは、パトスの相対的なパフォーマンスです。

ディスカッションをチェックしましたがpathos.pools、なぜそんなに長くなるのか、なぜエラーが発生するのか理解できませんでした (最後のオプションのパフォーマンスがどうなるかわかりません)。

私も単純な二乗関数を試してみましたが、そのためにpathos.multiprocessingはよりもはるかに長いですmultiprocessing

誰かがこれらのさまざまなオプションの違いを説明できますか?

さらに、pathos.multiprocessingcentOS を実行しているリモート コンピューターでオプションを実行しましたが、パフォーマンスは の約10 倍悪くなりmultiprocessingました。

コンピューターをレンタルしている会社によると、自宅のコンピューターと同じように機能するはずです。マシンの詳細がわからないと情報を提供するのは難しいかもしれませんが、それがどこから来たのかについてのアイデアがあれば、それは役に立ちます.

4

2 に答える 2