5
我在下面得到了一些非常簡單的代碼。 #!從多處理導入池 進口時間爲什麼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()
正如你可以看到在/ usr/bin中/ Python的 ,我有一個工人來處理1000個作業使用多。 如果工作是25-30,那麼工人會睡10s。這是嘗試模擬時間/資源成本的工作。
當我運行上面的代碼時,輸出如下所示。從作業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
...
如何羞辱我......謝謝你!!!!!!!! –