Di seguito ho trovato un codice molto semplice. #!/Usr/bin/python da multiprocessing importazione Pool tempo importPerché la multiprocessing di Python è in esecuzione in sequenza?
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()
Come potete vedere, ho un lavoratore di gestire 1000 posti di lavoro utilizzano il multiprocessing. Se il lavoro è 25-30, il lavoratore dormirà 10 secondi. Questo è provare a simulare un lavoro di costo tempo/risorsa.
Quando eseguo il codice precedente, l'out put è come indicato di seguito. Dal lavoro 25. L'intero processo è in esecuzione come un processo sequenziale. Perché ogni 10s viene emesso dopo il lavoro 24. Fino al completamento del lavoro 30.
Ma perché? Il processo di multiprocessing non dovrebbe essere eseguito contemporaneamente?
[[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
...
Come mi vergogno ...... grazie !!!!!!!! –