2012-07-23 16 views
15

Python'da bir uygulama yazıyorum ve bazı görevleri aynı anda çalıştırmam gerekiyor. Modül çoklu işlem sınıf Süreci sunar ve concurrent.futures modülü ProcessPoolExecutor sınıfına sahiptir. Her ikisi de, görevlerini yürütmek için birden fazla işlem kullanıyor görünmektedir, ancak API'leri farklıdır. Neden diğerinden birini kullanmalıyım?Python'da çok işlemciliğin eşzamanlılıklarının avantajları nelerdir?

Python 3'te concurrent.futures'ın eklendiğini biliyorum, bu yüzden daha iyi olur mu?

+0

http://stackoverflow.com/questions/24896193/whats-the-difference-between-pythons-multiprocessing-and-concurrent-futures çoğaltması ancak yanıtın ayrıntılar başka bir yerde kullanılamaması nedeniyle kapatılmamalıdır. – max

cevap

12

Concurrent.futures için motivasyonlar PEP kapsamındadır.

Pratik deneyimimde concurrent.futures, uzun süren görev sunma ve izleme durumları için daha uygun bir programlama modeli sağlar. Geçenlerde 2-3 saatlik bir pencerede gelen dosyalar için bir dizinin izlenmesini içeren concurrent.futures kullanılarak yazdığım bir program, her dosyayı bir göreve gönderirken, göndererek vb. ProcessPoolExecutor tarafından döndürülen gelecekteki nesneler, görev durumunu izlemeyi, ara durum raporlarını vb. Uygun bir şekilde sağlamayı sağlar.