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

  • 3biblecom

    3biblecom

    23 NİSAN 2011
  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010