Python ipler arabası mı?

oy
24

Yeterince tamamen kullanmaktan kaçınmak için - Güvenilir bir kodlayıcı arkadaşı Python'un mevcut çoklu iş parçacığı uygulama ciddi hatalı olduğunu söyledi. Bu rivayete hakkında ne can söyledi?

Oluştur 29/08/2008 saat 04:43
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
-2

Birkaç uygulamalarda kullandım ve vardı ne de sürece onun sınırlarını bildiği gibi% 100 güvenilir dışındaki parçacığı olma şey duymadım. Aynı anda 1000 konuları yumurtlamaya ve program Windows üzerinde düzgün çalışması için bekliyoruz, ancak kolayca bir işçi havuzu yazabilir ve sadece o 1000 operasyonlarını beslemek ve güzel ve her şeyi kontrol altına tutamazlar.

Cevap 29/08/2008 saat 04:50
kaynak kullanıcı

oy
4

Bildiğim kadarıyla hiçbir gerçek hatalar vardır biliyorum ama CPython içinde diş performans gerçekten kötü olarak dolayı (diğer birçok iş parçacığı uygulamaları ile karşılaştırıldığında, ancak bütün iplik en yaparsanız yeterince genellikle iyi blok) GIL (Küresel yorumlayıcı ) Kilit, bu yüzden gerçekten oldukça spesifik dilden belirli bir uygulamasıdır. Jython, örneğin, bu durum Java iplik modelini kullanarak zarar vermez.

Bkz bu o CPython uygulanmasından GIL kaldırmak için gerçekten mümkün değil neden yazı ve bu bazı pratik geliştirilmesi ve çözümler için.

Için hızlı google Do "Python GIL" Daha fazla bilgi için.

Cevap 29/08/2008 saat 04:58
kaynak kullanıcı

oy
50

Python ipler için iyidir eşzamanlı G / Ç programlama . Konuları onlar vb dosyası, ağ, gelen girişi için bekleyen bloğunda gibi bu diğerleri beklerken başka Python ipler CPU kullanmasına izin verir en kısa sürede CPU takas edilir. Bu da, örneğin, bir çok kanallı web sunucusu veya web tarayıcımızın yazmak için izin verecek.

Ancak, Python ipler tefrika edilmiş GIL onlar tercüman çekirdeğini girdiklerinde. Bu iki konu numaralarını çatırdayan ise, sadece bir her an çalışabileceği anlamına gelir. Ayrıca, çok çekirdekli ya da çok-işlemci mimarisi yararlanmak anlamına gelir.

C tabanlı parçacığı kitaplığı kullanarak, aynı anda birden fazla Python tercümanlar çalıştıran gibi çözümler vardır. Bu kalbin zayıf değildir ve faydaları sorun değerinde olmayabilir. en gelecekteki bir sürümde bir all Python çözümü için umut edelim.

Cevap 29/08/2008 saat 05:33
kaynak kullanıcı

oy
8

GIL (Küresel Tercüman Kilidi) bir sorun olabilir, ama API oldukça sorun yok. Mükemmel Deneyin processingayrı süreçler için Threading API uygular modülü. Şu anda (OS X üzerinde de olsa, Windows üzerinde bazı testler yapmak için henüz) ve gerçekten etkilendim olduğumu kullanıyorum. Kuyruk sınıfı gerçekten karmaşıklığın yönetimi açısından benim pastırma kaydediyor!

DÜZENLEME : bu işlem modülü sürüm 2.6 standart kitaplığı dahil olan seemes ( import multiprocessing). Sevinç!

Cevap 29/08/2008 saat 05:55
kaynak kullanıcı

oy
15

(Bu C yazıldığı gibi genel CPython olarak da bilinir) Python standart uygulaması OS konuları kullanır, ancak olmadığından Küresel Tercüman Kilidi , bir seferde sadece bir iplik Python kodunu çalıştırmak için izin verilir. Ancak bu sınırlamalar dahilinde, parçacığı kütüphaneleri sağlam ve yaygın kullanılmaktadır.

Eğer birden fazla işlemci çekirdeği kullanabilmek istiyorsanız, birkaç seçenek vardır. Başkaları tarafından belirtildiği gibi biri aynı anda birden fazla piton tercümanlar kullanmaktır. Başka bir seçenek GIL kullanmaz Python farklı bir uygulamasını kullanmaktır. İki ana seçenek vardır Jython ve IronPython .

Jython Java ile yazılmış ve bazı uyumsuzluklar kalmakla birlikte, artık oldukça olgun edilir. Örneğin, bir web çerçeve Django henüz mükemmel çalışmaz , ama sürekli yaklaşıyor. Jython olan iplik güvenliği için büyük , çıkan kriterler daha iyi ve sahip GIL isteyenler için arsız mesaj .

IronPython NET framework kullanır ve C # ile yazılmış. Uyumluluk aşamasına ulaşıyor Django IronPython çalışabilir (en azından bir demo) ve orada IronPython mesajları kullanarak kılavuzlar .

Cevap 29/08/2008 saat 16:17
kaynak kullanıcı

oy
1

Eğer python kod ve büyük parçacığı destek almak istiyorsanız, size IronPython veya Jython kontrol etmek isteyebilirsiniz. IronPython ve Jython içinde piton kodu sırasıyla .NET CLR ve Java VM üzerinde çalışan bu yana, onlar bu kütüphaneler yerleşik büyük bir iş parçacığı desteğine sahip. Buna ek olarak, IronPython GIL, çok çekirdekli mimarileri tam yararlanarak CPython mesajları engelleyen bir sorunu yoktur.

Cevap 23/02/2009 saat 05:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more