İşte bunu yapmanın basit bir yolu.
- Yapacak tek bir ortak paylaşılan bir sıra oluşturur. Bu uygulama bu kuyruğu yapılacak iş ile dolduracaktır.
kuyruktan bir öğe alır ve çalışır bir uygulama oluşturun.
Bu, tek üretici çoklu tüketici tasarımdır. İyi çalışır ve makinenizi paralel süreçlerle karıştırın.
Eğer çoklu işleme API çeşit kuyruğu sarmak gerekiyor, yerleşik kuyruk sınıf kullanın.
http://docs.python.org/library/queue.html. Şahsen, kuyruğu çalıştıran küçük bir HTTP tabanlı web sunucusu oluşturmak istiyorum. Her uygulama bir sonraki iş parçasını almak için GET yapar.
Sen çok güzel paylaşılan sıra oluşturmak için RabbitMQ gibi araçlar kullanabilirsiniz. http://nathanborror.com/posts/2009/may/20/working-django-and-rabbitmq/
Sen JMS kuyruklar faydalanmak için http://hjb.python-hosting.com/ kullanmak mümkün olabilir.
oluşturabilir ve çalışma ile kuyruğu doldurmak için küçük bir uygulama gerekir.
istediğiniz gibi uygulamanın sayıda kopyasını oluşturun. Örneğin:
for i in 1 2 3 4 5 6 7 8 9 10
do
python myapp.py &
done
Bu uygulamanın 10 eşzamanlı kopyalarını çalışacaktır. Tüm 10, tek bir sıradan iş almaya çalışıyor. Tüm mevcut CPU kaynaklarını kullanacaklar ve OS bunları sizin için iyi bir şekilde programlayacak.
Peer, düğümden düğüme senkronizasyonu O düğümler arasında (n * (n-1)/2) iletişim yolları anlamına gelir.
"İki bitişik düğümler", hala 2 * n iletişim yollarına sahip olduğunuzu ve çalışmaların düğümler arasında "bir şekilde" damlaması gerektiğini gösterir. Eğer düğümler başlangıçta iş ile tohumlanırsa, birileri iş yükünü dengelemek için çok fazla plan yaptı. Eğer bu kadar çok planlama yapacaksanız, düğümlerden neden senkronizasyon yapmasını isteyin?
Kuyruklar, her düğümün yavaş olabileceğinden başlamak için dikkatlice dengelenmemişse. Her garip düğüm hızlı olabilirdi.Garip düğümler önce tamamlanır, iki çift düğümden iş olup olmadığını kontrol eder ve bu düğümler (a) yapılmaz ve (b) daha fazla iş yapamazlar. Şimdi ne var? Düğümlerin yarısı çalışıyor, yarısı boş. Tüm işin ilk dağıtımında zayıf planlama nedeniyle.
Master-slave, n iletişim yollarınız olduğunu gösterir. Ayrıca, tüm boşta düğümler işe eşit erişim sağladığından dengeleme otomatiktir. Kötü performansa yol açan önyargılı bir başlangıç dağıtımı diye bir şey yoktur.
Bu programın mevcut tasarımına benzer, teşekkür ederim, ancak düğüm yapısı yerine bir efendi-köle yapısına bir düğüme sahip isteyen vardır. Birden fazla işlemden birçok kez erişilen tek bir sıraya sahip olmak, bir kümede olası bir darboğaz yaratır mı? – patemotter
@DistortedLojik: Her çalışma paketi mikroskobik olarak küçük olmadıkça tek sıra sorun olmamalıdır. Bu çok yüksek bir yüke sahip olmak için kuyruğa erişim maliyetinin amortize edilmesini istiyor. –