5
私は以下のいくつかの本当に簡単なコードを手に入れました。 #マルチプロセッシングインポートプールから!は/ usr/binに/ pythonの インポート時なぜPythonマルチプロセッシングが順番に実行されているのですか?
def worker(job):
if job in range(25,30):
time.sleep(10)
print "job:%s" %job
return (job)
pool = Pool(processes=10)
result = []
for job in range(1, 1000):
result.append(pool.apply_async(worker(job)))
pool.close()
pool.join()
あなたが見ることができるように、私はマルチプロセッシングを使用して1000個のジョブを処理するために、労働者を持っています。 ジョブが25-30の場合、ワーカーは10秒間スリープ状態になります。これは、時間/リソースコストジョブをシミュレートしようとしています。
上記のコードを実行すると、出力は以下のようになります。ジョブ25から。プロセス全体がシーケンシャルプロセスのように実行されています.10秒ごとにジョブ24の後に出力があります。ジョブ30が終了するまで。
なぜですか?マルチプロセッシングプロセスを同時に実行するべきではありませんか?
[[email protected] tmp]# ./a.py
job:1
job:2
job:3
job:4
job:5
job:6
job:7
job:8
job:9
job:10
job:11
job:12
job:13
job:14
job:15
job:16
job:17
job:18
job:19
job:20
job:21
job:22
job:23
job:24
job:25
job:26
...
私はいかがですか......ありがとう!!!!!!!! –