CPython'da, import, py dosyasını bir pyc dosyasına derlemek ve dosyayı geçerli karede yürütmek anlamına gelir ve bir dahaki sefere de CPython pyc dosyasını yeniden derlemeden doğrudan yükler. Ironpython'da ithalattan ne haber? Sanırım ironpython pisi gibi bir formata sahip değil. İthalat her zaman derliyor mu?Ironpython'da bir modülü içe aktarırken ne olur?
cevap
Evet, IronPython her modda içe aktarılan modülü yeniden derler. Aslında iki kere.
Karmaşık.
İlk geçişte, Python kodu AST'ye ayrıştırılır, AST bir DLR ifade ağacına dönüştürülür ve ifade ağacı saklanır. Bunu yürütme zamanı geldiğinde, ifade ağacı basit bir yığın tabanlı yorumlayıcı için bir dizi komut olarak derlenir ve modül kodu bu tercüman üzerinde yürütülür. Koşarken hızlı değil ama çok az başlangıç zamanı var.
Bir parça kod bir süre çalıştıktan sonra, IronPython ne kadar yavaş olduğundan, ifade ağacına geri döner ve kodu .NET temsilcisine yeniden derler. Bu, MSIL ve sonra .NET JIT tarafından yerel kod dönüştürülür anlamına gelir. Bu kod yürütmek için hızlı, ancak oluşturmak için zaman alır.
Bu dönüştürme, işlev başına (hatta döngü başına) temel alınır, böylece bir modülden bir işlevi tekrar tekrar ve geri kalanını kullanmazsanız, yalnızca yaygın olarak kullanılan işlev tam IL kodundan geçecektir. nesil ve JITting. Bununla birlikte, bu derlemenin hiçbiri diske kaydedilmez. IronPython ile birlikte gelen pyc.py programı kodu önceden girebilir, ancak çalışma zamanında oluşturulan kod, pyc.py tarafından oluşturulan koddan farklı olduğu için otomatik olarak yapılmaz. Çalışma zamanı kodu genellikle toplanabilir, pyc.py tarafından oluşturulan kod ise - ve çalışma zamanında tahsil edilemeyen kod üretilmesi bellek sızıntılarına neden olur. pyc.py birkaç adımı kaydederek ithalatı daha hızlı yapmalıdır, ancak ne kadar emin değilim.
Çok teşekkür ederim! – zchenah
- 1. Swift uygulaması: Statik kütüphaneye içe çerçeveyi aktarırken “Gerekli modülü eksik”
- 2. Modülleri içe aktarırken hata oluştu
- 3. Matplotlib TypeError içe aktarırken matplotlib.pyplot
- 4. Python'da Tkinter içe aktarırken ImportError
- 5. İçe aktarırken bir operatör nasıl gizlenir?
- 6. Bir .pyd dosyasını (python modülü olarak) .pyo dosyasından içe aktarırken hata.
- 7. Python, xfsm modülünü içe aktarırken libc'yi yükleyemiyor
- 8. Başa dön Yüklerken/içe aktarırken karşılaşılan sorunlar
- 9. Bir modülü içe aktarırken harici modülleri gizle (ör., Kod tamamlama ile ilgili olarak)
- 10. EkimCMS'de bazı modülü devre dışı bırakırsam ne olur?
- 11. Swift Paket Yöneticisi (SPM): Kitaplığı içe aktarırken hata oluştu
- 12. CodeSense, çerçeveler içe aktarırken her zaman çalışmaz
- 13. Github'dan bir android projeyi içe aktarırken neden proje gösterilmiyor?
- 14. "'Test' modülü yanlış olarak içe aktarılıyor" ne anlama geliyor?
- 15. Bir işlem çatallandığında ne olur?
- 16. Uygulama kilitlendiğinde ne olur?
- 17. Bu bildirimde ne olur?
- 18. Bir açısal js sözü reddedilmez ve başarısız olur ne olur?
- 19. JavaScript'te, bulunmayan bir özelliği "silmek" durumunda ne olur? Ben bir değişken varsa JavaScript ne olur
- 20. Kullanıcı .NET derlemesini (EXE) tıkladığında ne olur?
- 21. Çalışırken bir Python betiğini değiştirirsem ne olur?
- 22. System.exit bir kapatma kancasından çağrılırsa ne olur?
- 23. Bir shared_ptr'nin yapıcısı başarısız olursa ne olur?
- 24. Başlık dosyasında bir sınıf uygularsam ne olur?
- 25. Bir Bağlamı iptal etmezsem ne olur?
- 26. Uygulama kaldırıldığında PendingIntents'a ne olur?
- 27. OnPause'dan sonra AsyncTasks'e ne olur?
- 28. Yenileme jetonu kaybedilirse ne olur?
- 29. Mongodb hafıza dışındayken ne olur?
- 30. pthread_create pthread_create sonra ne olur?
Hala kimse cevap vermiyor mu? Görünüşe göre kendime cevap vermek zorundayım ... – zchenah