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

  • lifeisforsharingDT

    lifeisforsha

    18 Mayıs 2011
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007