SORU
13 Ocak 2009, Salı


Nasıl (yeniden) Python bir modülü kaldırmak mı?

Uzun süren bir Python sunucu ve sunucuyu yeniden başlatmadan bir hizmet yükseltmek mümkün olmak istiyorum. En iyi yolu bu ne işe yarıyor?

if foo.py has changed:
    unimport foo  <-- How do I do this?
    import foo
    myfoo = foo.Foo()

CEVAP
13 Ocak 2009, Salı


Zaten reload yerleşik işlevini kullanarak alınmış bir modülü yeniden:

import foo

while True:
    # Do some things.
    if is_changed(foo):
        foo = reload(foo)

İstediğinin bu olduğunu düşünüyorum. Django geliştirme sunucusu gibi Web sunucular sunucu işlemi kendisi yeniden başlatmadan kod değişikliklerin etkisini görmek için bu kullanın.

Doktorlar alıntı için:

Python modülleri’ kod derlenir ve modül düzeyi kodu reexecuted, hangi nesneleri yeni bir dizi tanımlama modülün içinde adlarına bağlı sözlük. Init fonksiyonu uzatma modülleri bir çağrılmaz ikinci kez. Diğer tüm nesneler gibi Python eski nesneleri sadece başvuru sayılarına sonra iadesi sıfıra indir. Modül isimleri ad herhangi bir işaret için güncellendi yeni veya değiştirilmiş nesneler. Diğer eski nesnelere başvurular (gibi adları modülü için harici) rebound yeni nesneleri başvurmak ve güncelleştirilmesi gereken her ad eğer bunların gerçekleştiği, bu arzu edilir.

Eğer söz konusu belirtildiği gibi, Eğer Foo sınıfı foo modülü bulunuyorsa Foo nesneleri yeniden oluşturmak gerekecek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AFISHAL

    AFISHAL

    7 Mart 2009
  • TheJoeycool2010

    TheJoeycool2

    12 Temmuz 2010
  • FusioNGamiing

    FusioNGamiin

    10 Temmuz 2007