2017-05-23 10 views
0

100のクエリを並列に実行する必要がありますが、十分なリソースがないため、20のサブリストを持つリストを作成しました。各サブリストには5つのプロセスが含まれています。Pythonマルチプロセッシングによるジョブリストの一覧

ここでは、ジョブリストを連続して実行したいと考えています。 私はより多くを説明します。最初の5つのクエリが終了したときに、第2次5は、発売されるなど...

Iやったこの:

jobs_list = [] 
for sublist in list_all: 
    jobs = [] 
    for cd in sublist: 
     process = multiprocessing.Process(target=calc_zio, args=(cd,)) 
     jobs.append(process) 
    jobs_list.append(jobs) 

for l in jobs_list: 
    for j in l: 
     j.start() 

for l in jobs_list: 
    for j in l: 
     j.join() 

しかし、私はCPU

の100%で走っていました

どこが間違っていたのですか?

ありがとうございました!

+0

私は右にカウントすると、あなたは** 100 ** 'プロセス'を実行しています。 https://docs.python.org/3/library/multiprocessing.html#module-multiprocessing.pool – stovfl

答えて

0

あなたは次のサブセクションを開始する前にサブリストに参加する必要があります。

+0

を読んでいただきありがとうございます。理解しました これはうまくいくようです。私はCPUの40%から65%の間を走っていて、python.exeは5つしかありません。 –

+0

@AdamAdamがstovflとしてコメントに記載されています。これは 'multiprocessing.pool'を使用するのに適しています与えられた数のプロセスが常に実行されています。この実装では、5つのうちの1つが残りのものよりも長くかかる場合、そのバッチの多くの時間が1つのプロセスを実行するために使用されます。したがって、プールは消費されるリソースを制限するだけでなく、負荷をより一定に保つことができます。 – Aaron

+0

これは私が今しようとしていることですが、マルチプロセッシングの便利な例は見つかりません。プール –

関連する問題