2012-03-31 18 views
7

Daha sonra, RAM'da değişkene okuma ve çeşitli süreçlerden bu değişkenleri güncelleştirmek için gereken bir çok işlem piton uygulaması (süreçler uwsgi ile kökenli) sahiptir. Çok fazla önbellekleme seçeneği bulunduğunu biliyorum, ancak bulduğum her şey sadece dizeleri saklayabilir. Farklı python işlemlerinin aynı sanal belleğe erişmesi ve böylece verileri hiç dönüştürmeden, hatta kopyalamaksızın paylaşması mümkün mü?Python işlemleri canlı nesneleri paylaşabilir mi?

+0

[System V paylaşılan belleğinin Python'da olası kopyası var mı?] (Http://stackoverflow.com/questions/2219604/system-v-shared-memory-in-python) – Amber

+0

[işleme] 'ye göz atın (http: //pypi.python.org/pypi/processing) paketi. – Keith

+0

Her ikisini de zaten kontrol ettim. sysv_ipc yalnızca dizeleri depolar ve "işleme" işe yaramaz çünkü süreçler python değil, uwsgi tarafından oluşturulur. –

cevap

6

en azından Yapmanız (SvsV-IPC paylaşılan hafızada yer Python Nesneleri ve birden süreçlerden onları değiştirmek) istiyor ve uygun kendi uzatma modülünü geliştirmeye başlangıç ​​noktası olarak hizmet verebilir şeyin bir parçasını yapar POSH, Python Shared Objects, yanında Eğer WSGI-kökenli sunucu süreçleriyle sahip ihtiyacı işlemleri arasında onları paylaşmak koşuluyla dağlama/unpickling nesneler dayanmaz ki (ben ... bildiğim kadarıyla) Python dünyada başka pek bir şey yok.

da akla gelen bir diğer şey süreçler (yani aynı zamanda Unix Alanı soketleri aracılığıyla paylaşabilirsiniz) arasında keyfi bir ağ bağlantıları üzerinden paylaşım yok Pyro, ve benim kendi deneyim ne yerleşik daha esnektir multiprocessing (proxy) nesne yönetimi için teklif verebilir.

değil çatal süreçler için WSGI-uygulama sürüyor web sunucusu alabilirsiniz, ama daha ziyade diş kullanmak için olup olmadığıdır de ayrıca bir göz olabilir ne; Bu şekilde, paylaşılan nesne önbelleği için standart Python global verilerini kullanmanız yeterlidir. Böylece, tüm oluşturulan WSGI işleyici iş parçacıklarından erişebilirsiniz. Bir dişli WSGI-sunucu Ne yaşıyorsanız tam talebi olan bir proje için kullanıyorum örneğin CherryPy-yerleşik wsgiserver içindir. mod_wsgi ayrıca işçi MPM Apache yapılandırmak ihtimaline karşı bağlam için çalışır (böylece Apache konuları ve yeni süreçler çatal değil). Bunların hepsi bir seçenek değilseniz

nasıl web sayfalarını iş isteklerini itmek ve çekmek için RPC mekanizmasının bazı formu aracılığıyla iletişim harici bir süreç yol artık webserver'da yapıyoruz fiili işlemeyi ayıklama hakkında veri? "Arka uç" işleme sunucusu daha sonra standart kütüphanesinde SimpleXMLRPCServer veya benzer bazı şey boyunca XML-RPC arayüzü sunuyor basit bir iş parçacıklı Python süreci olabilir.

+0

Şu an bunu test edemiyorum çünkü bilgisayarım onarılıyor, ama iş parçacığının aradığım cevap olduğunu düşünüyorum. Ben daha önce belirsiz oldu: sunucu uWSGI, hangi eminim ki forking yerine iş parçacığı kullanabilirsiniz. Bunun performansı nasıl etkileyeceğini bilmiyorum, ama bu başka bir soru. –

İlgili konular