Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft Fabric'te not defteri oturumlarının yaşam döngüsünü yönetmek için kullanın notebookutils.session . Etkileşimli bir oturumu durdurabilir veya temizleme, kaynak yönetimi ve hata kurtarma için Python yorumlayıcısını yeniden başlatabilirsiniz.
Aşağıdaki tabloda kullanılabilir oturum yönetimi yöntemleri listelenmektedir:
| Yöntem | Signature | Açıklama |
|---|---|---|
stop |
stop(): void |
Geçerli etkileşimli oturumu asenkron olarak durdurur ve kaynakları serbest bırakır. PySpark, Scala ve R not defterlerinde isteğe bağlı detach bir parametre kabul eder. |
restartPython |
restartPython(): void |
Spark bağlamını olduğu gibi tutarken Python yorumlayıcısını yeniden başlatır. Yalnızca Python ve PySpark not defterlerinde kullanılabilir. |
Uyarı
stop() Yöntemi Python, PySpark, Scala ve R not defterlerinde kullanılabilir. PySpark, Scala ve R not defterlerinde, stop() isteğe bağlı bir detach parametre kabul eder: stop(detach=True).
detach
True (varsayılan) olduğunda, oturum tamamen durdurulmak yerine yüksek eşzamanlılık oturumundan ayrılır.
Uyarı
restartPython() yöntemi yalnızca Python ve PySpark not defterlerinde kullanılabilir. Scala veya R not defterlerinde kullanılamaz.
Önemli
İşlem hattı yürütme modunda, kod tamamlandıktan sonra oturumlar otomatik olarak durur.
session.stop() API öncelikli olarak, durdur düğmesine tıklamak yerine program aracılığıyla oturumu durdurmak istediğiniz etkileşimli oturumlara yöneliktir.
Uyarı
stop() yöntemi arka planda zaman uyumsuz olarak çalışır ve Spark oturum kaynaklarını serbest bırakır ve böylece aynı havuzdaki diğer oturumların kullanımına sunulur.
Etkileşimli oturumu durdurma
Durdur düğmesini el ile seçmek yerine, kodunuzda bir API çağırarak etkileşimli oturumu durdurabilirsiniz.
notebookutils.session.stop() API, geçerli etkileşimli oturumu arka planda eş zamansız olarak durdurur. Ayrıca Spark oturumunu durdurur ve oturum tarafından kullanılan kaynakları serbest bırakır, böylece aynı havuzdaki diğer oturumlar için kullanılabilir.
Uyarı
Sonrasındaki session.stop() kod yürütülmüyor. Oturum durdurulduğunda tüm bellek içi veriler ve değişkenler kaybolur. çağrısına session.stop()başlamadan önce önemli verileri kaydedin.
Dönüş davranışı
stop() yöntemi bir değer döndürmez. Oturumun zaman uyumsuz bir şekilde kapatılmasını başlatır.
Python yorumlayıcısını yeniden başlatma
Python yorumlayıcısını yeniden başlatmak için kullanın notebookutils.session.restartPython() .
Uyarı
PySpark (Spark) not defterlerinde, restartPython() Spark bağlamını olduğu gibi tutarken yalnızca Python yorumlayıcısını yeniden başlatır. Spark bağlamı olmayan Python not defterlerinde Python restartPython() işleminin tamamını yeniden başlatır.
notebookutils.session.restartPython()
Dönüş davranışı
restartPython() yöntemi bir değer döndürmez. Yeniden başlatma tamamlandıktan sonra kod yürütme sonraki hücrede devam eder.
Şu noktaları göz önünde bulundurun:
- Not defteri başvuru çalıştırma durumunda,
restartPython()yalnızca başvuruda bulunulan mevcut not defterinin Python yorumlayıcısını yeniden başlatır. Ana not defterini etkilemez. - Nadir durumlarda, Spark yansıma mekanizması nedeniyle komut başarısız olabilir. Yeniden deneme eklemek sorunu hafifletebilir.
- çağrıldıktan
restartPython()sonra kod yürütme sonraki hücrede devam eder. Yeni yüklenen paketleri sonraki bir hücreye aktar.
Kullanım desenleri
Durdurmadan önce düzgün temizleme
Temizlemenin oturum durdurulmadan önce çalıştırıldığından emin olmak için bir try-finally bloğu kullanın.
try:
print("Starting data processing...")
# ... processing logic here ...
except Exception as e:
print(f"Processing failed: {str(e)}")
raise
finally:
print("Performing cleanup...")
try:
notebookutils.fs.unmount("/mnt/data")
except:
pass
notebookutils.session.stop()
Paketleri yükleme ve yorumlayıcıyı yeniden başlatma
ile pipyeni paketler yükledikten sonra, paketlerin kullanılabilir olması için Python yorumlayıcısını yeniden başlatın:
import subprocess
import sys
packages = ["pandas==2.0.0", "numpy==1.24.0"]
print("Installing packages...")
for package in packages:
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
print("Restarting Python interpreter...")
notebookutils.session.restartPython()
Uyarı
çağrıldıktan restartPython()sonra kod yürütme sonraki hücrede devam eder. Yeni yüklenen paketleri sonraki bir hücreye aktarın.
Yorumlayıcı yeniden başlatma ile hata kurtarma
Python yorumlayıcısı bozuk bir duruma ulaşırsa, yeniden başlatarak kurtarmayı denemeniz gerekir:
def recover_from_error():
"""Attempt to recover from errors by restarting Python."""
try:
test_value = 1 + 1
except Exception as e:
print(f"Python interpreter error: {str(e)}")
print("Restarting Python interpreter...")
notebookutils.session.restartPython()
return False
return True
if not recover_from_error():
print("Recovery attempted - check next cell")
Durdurmadan önce kaynak temizleme
Oturumu sonlandırmadan önce bağlı yolları, geçici dosyaları ve önbellekleri temizleyin:
try:
df = spark.range(0, 1000000)
df.cache()
result = df.count()
print(f"Processing completed: {result}")
except Exception as e:
print(f"Operation failed: {str(e)}")
raise
finally:
spark.catalog.clearCache()
print("Stopping session to free resources...")
notebookutils.session.stop()
Yalnızca etkileşimli mod için koşullu durdurma
İşlem hattı modunda gereksiz çağrılardan kaçınmak için durdurmadan önce yürütme bağlamını denetleyin:
context = notebookutils.runtime.context
if not context['isForPipeline']:
print("Interactive mode: stopping session...")
notebookutils.session.stop()
else:
print("Pipeline mode: session stops automatically after execution")
Tavsiye
Her zaman, session.stop() veya session.restartPython() öğesini çağırmadan önce önemli sonuçları—örneğin, DataFrame'leri depolama alanına yazmak veya çıktıyı günlüğe kaydetmek gibi—kaydedin. Her iki işlem de bellek içindeki tüm durumu siler.