2012-07-23 32 views
15

我正在用Python編寫一個應用程序,我需要同時運行一些任務。模塊多處理提供類Process,並且concurrent.futures模塊具有類ProcessPoolExecutor。兩者似乎都使用多個進程來執行他們的任務,但他們的API是不同的。爲什麼我應該使用一個呢?concurrent.futures相對於Python中的多處理有什麼優勢?

我知道concurrent.futures是在Python 3中添加的,所以我猜它更好?

+0

重複http://stackoverflow.com/questions/24896193/whats-the-difference-between-pythons-multiprocessing-and-concurrent-futures但不應該關閉,因爲答案提供了其他地方不可用的詳細信息。 – max 2017-05-06 08:02:07

回答

12

併發期貨的動機包含在PEP中。

在我的實踐經驗中,concurrent.futures爲長期運行的任務提交和監視情況提供了一個更方便的編程模型。我最近編寫的一個使用concurrent.futures的程序涉及在2-3小時的窗口中監視傳入文件的目錄,在每個文件到達任務並提交它時翻譯它等等。 ProcessPoolExecutor返回的未來對象允許跟蹤任務狀態,以方便的方式提供中間狀態報告等。

相關問題