Bir Python betiğini çalışırken değiştirirsem ne olur?


219

Çalışması uzun sürecek bir python betiği düşünün, çalışırken değiştirirsem ne olur? Sonuç farklı mı olacak?


8
Program ana belleğinize yüklenir. Kaynak dosyayı değiştirirseniz hiçbir şey olmaz. CPU'nun sabit sürücüden talimatları okuyacağını hayal edin ...
Felix Kling

15
@Felix: Buna "Yerinde Yürüt" (XIP) denir.
Ignacio Vazquez-Abrams

@Ignacio: İlginç, bunu bilmiyordum. Teşekkürler :)
Felix Kling

3
Modüllerin kodunu dinamik olarak yeniden yükleyebilirsiniz, bkz. Stackoverflow.com/questions/437589/…
Iliyan Bobev

2
Windows toplu dosyaları o Not yapmak bu varsayımsal bir soru değil bu yüzden orada diller o uslu bu şekilde vardır, bir yerde çalıştırın.
yoyo

Yanıtlar:


259

Hiçbir şey, çünkü Python betiğinizi bir PYC dosyasına önceden derler ve bunu başlatır.

Bununla birlikte, bir tür istisna oluşursa, biraz yanıltıcı bir açıklama alabilirsiniz, çünkü X satırı komut dosyasını başlatmadan önce farklı bir koda sahip olabilir.


10
Mutlaka bir dosyaya değil.
Ignacio Vazquez-Abrams

60
Peki, yeni pyc dosyaları eskisinin üzerine yazıldığında, çalışırken yeniden başlatırsanız, program zaten çalışmakta olan veya çalışmayan sorunlara neden olur?
yavaşladı

26
Hiçbir şey olmuyor. Küçük bir testte de kontrol ettim. Ne olur: pyc sadece derlemedir. Ve bu derleme RAM'e yüklenir ve daha sonra çalıştırılır. Bu nedenle programı değiştirmek, yeniden derlemek ve başka bir örneği örneğin farklı bir konsolda çalıştırmak her zaman mümkündür.
Chris

7
@Chris Bir konsolda python betiğimin bir örneğini başlattım. Bu çalışırken, iki kod satırını değiştirdim ve ayrı bir konsolda başka bir örnek başlattım. Bir süre sonra, ilk konsoldan başlattıktan sonra değiştirdiğim iki kod satırı hakkında bir hata aldım! pls yardım
double_j

14
@Chris Sanırım burada ne olduğunu biliyorum. Bir komut dosyasını değiştirir ve çalışırken ve önceki sürüm hatalarını kaydederseniz, geri izleme okumasında, dosyanın geçerli sürümünü açar ve geri izlemeyi başlattığınız zamandan farklı gösterir. Bunu birkaç kez gördüm.
double_j
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.