15 HAZİRAN 2010, Salı
Çoklu işlem Parçacığı vs Python
threading multiprocessing avantajları anlamaya çalışıyorum. BiliyorumÇoklu işlemetrafında Küresel Tercüman ama başka avantajları da var ne Kilit, alır, veiş parçacığıaynı şey değil mi?
CEVAP
15 HAZİRAN 2010, Salı
Burada aklıma gelen eksileri/artıları.
Çoklu işlem
Artıları
- Bellek alanı ayrı
- Kod genellikle basittir
- Alır birden fazla İşlemci ve çekirdek avantajı
- Önler cPython için GİL sınırlamalar
- Paylaşılan bellek kullanıyorsanız sürece, çoğu ortadan kaldırır eşitleme ilkel ihtiyaçlarını (yerine, IPC için iletişim bir model daha var)
- Alt işlemler ınterruptible/öldürülebiliyor
multiprocessing
Python modülüthreading.Thread
gibi bir arayüz ile yararlı soyutlamalar içerir- Bir CPU-bound cPython ile işlenmesi gerekir
İnş
- Daha fazla yük ile biraz daha karmaşık (vs paylaşılan bellek/nesneleri iletişim modeli) IPC
- Büyük bellek ayak izi
İş parçacığı
Artıları
- Hafif - düşük bellek ayak izi
- Paylaşılan bellek - başka bir bağlamda daha kolay devlet için erişim sağlar
- Kolayca duyarlı kullanıcı Arayüzü yapmanıza olanak verir
- düzgün GİL serbest cPython C uzantısı modülleri paralel olarak çalışır
- Benim için harika bir seçenek O-ilişkili uygulamalar/
İnş
- cPython - GİL tabi
- Interruptible/öldürülebiliyor
- Eğer komut sırası/mesaj pompa modeli (
Queue
modülü kullanarak) takip etmiyor, sonra eşitleme ilkel manuel kullanmak bir zorunluluk (kararlar kilitleme parçalı yapı için gerekli) - Kod genellikle daha zor anlamak ve selam olsun - yarış koşulları için potansiyel önemli ölçüde artar
Bunu Paylaş:
Çoklu iş parçacığı havuzu Havuza benze...
Python Çoklu işlem.Uygulamak, apply_as...
Kilidi serbest Çoklu-işlem gerçek bir ...
Çözme embarassingly paralel sorunları ...
Python turşu hata Çoklu işlem...