2012-07-23 25 views
15

Sto scrivendo un'app in Python e ho bisogno di eseguire alcune attività contemporaneamente. Il multiprocessing del modulo offre la classe Process e il modulo concurrent.futures ha la classe ProcessPoolExecutor. Entrambi sembrano utilizzare più processi per eseguire le loro attività, ma le loro API sono diverse. Perché dovrei usarne uno sull'altro?Quali sono i vantaggi di concurrent.futures rispetto alla multiprocessing in Python?

So che concurrent.futures è stato aggiunto in Python 3, quindi immagino sia meglio?

+0

Duplicato di http://stackoverflow.com/questions/24896193/whats-the-difference-between-pythons-multiprocessing-and-concurrent-futures ma non deve essere chiuso perché la risposta fornisce dettagli non disponibili altrove. – max

risposta

12

Le motivazioni per i casi concomitanti sono trattate nello PEP.

Nella mia esperienza pratica concurrent.futures fornisce un modello di programmazione più conveniente per le situazioni di invio e monitoraggio di attività a lungo termine. Un programma che ho scritto di recente usando concurrent.futures ha coinvolto il monitoraggio di una directory per i file in arrivo su una finestra di 2-3 ore, traducendo ogni file quando arriva a un'attività, inviandolo e così via. Gli oggetti futuri restituiti da ProcessPoolExecutor consentono di tenere traccia dello stato dell'attività, fornendo rapporti sullo stato intermedio, ecc. In modo conveniente.

Problemi correlati