Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Bruges notebookutils.session til at styre livscyklussen for notesbogssessioner i Microsoft Fabric. Du kan stoppe en interaktiv session eller genstarte Python-tolken for oprydning, ressourcestyring og fejlgenretning.
Følgende tabel viser de tilgængelige sessionsstyringsmetoder:
| Metode | Signatur | Beskrivelse |
|---|---|---|
stop |
stop(): void |
Stopper den aktuelle interaktive session asynkront og frigiver ressourcer. I PySpark, Scala og R-notebooks accepterer en valgfri detach parameter. |
restartPython |
restartPython(): void |
Genstarter Python-tolken, mens Spark-konteksten bevares. Tilgængelig kun i Python- og PySpark-notebooks. |
Bemærkning
Metoden stop() er tilgængelig i notebooks i Python, PySpark, Scala og R. I PySpark-, Scala- og R-notebooks accepterer stop() en valgfri detach parameter: stop(detach=True). Når detach er True (standarden), løsriver sessionen sig fra en høj-samtidighedssession i stedet for at stoppe den helt.
Bemærkning
Metoden restartPython() er kun tilgængelig i Python- og PySpark-notebooks. Den er ikke tilgængelig i Scala eller R-notebooks.
Vigtigt!
I pipeline-eksekveringstilstand stopper sessionerne automatisk, når koden er færdig. API'et session.stop() er primært beregnet til interaktive sessioner, hvor du vil stoppe sessionen programmatisk i stedet for at klikke på stopknappen.
Bemærkning
Metoden stop() fungerer asynkront i baggrunden og frigiver Spark-sessionsressourcer, så de bliver tilgængelige for andre sessioner i samme pool.
Stop en interaktiv session
I stedet for manuelt at vælge stopknappen kan du stoppe en interaktiv session ved at kalde et API i din kode.
API'et notebookutils.session.stop() stopper den aktuelle interaktive session asynkront i baggrunden. Det stopper også Spark-sessionen og frigiver ressourcer, der er optaget af sessionen, så de er tilgængelige for andre sessioner i samme pool.
Bemærkning
Kode efter session.stop() bliver ikke udført. Alle data og variabler i hukommelsen går tabt, når sessionen stopper. Gem vigtige data, før du ringer session.stop().
Returadfærd
Metoden stop() returnerer ikke en værdi. Det initierer en asynkron nedlukning af sessionen.
Genstart Python-fortolkeren
Brug notebookutils.session.restartPython() den til at genstarte Python-tolken.
Bemærkning
I PySpark (Spark) notebooks genstarter kun Python-fortolkeren, restartPython() mens Spark-konteksten bevares. I Python-notebooks, som ikke har en Spark-kontekst, restartPython() genstarter hele Python-processen.
notebookutils.session.restartPython()
Returadfærd
Metoden restartPython() returnerer ikke en værdi. Efter genstarten er fuldført, fortsætter kodeeksekveringen i den næste celle.
Hav disse overvejelser i tankerne:
- I notebook reference run-tilfældet
restartPython()genstarter kun Python-fortolkeren af den aktuelle notebook, der refereres. Det påvirker ikke forældrenotesbogen. - I sjældne tilfælde kan kommandoen fejle på grund af Spark-refleksionsmekanismen. At tilføje et nyt forsøg kan afhjælpe problemet.
- Efter at have kaldt
restartPython(), fortsætter kodeudførelsen i den næste celle. Importer nyinstallerede pakker i en efterfølgende celle.
Brugsmønstre
Elegant rengøring før stop
Brug en try-finally blok for at sikre, at oprydningen sker, før sessionen stopper:
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()
Installer pakker og genstart fortolkeren
Efter at have installeret nye pakker med pip, genstart Python-fortolkeren, så pakkerne er tilgængelige:
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()
Bemærkning
Efter at have kaldt restartPython(), fortsætter kodeudførelsen i den næste celle. Importer de nyinstallerede pakker i en efterfølgende celle.
Fejlgendannelse med genstart af fortolkeren
Hvis Python-fortolkeren når en korrupt tilstand, kan du forsøge at gendanne den ved at genstarte den:
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")
Ressourceoprydning før stop
Ryd op i monterede stier, midlertidige filer og caches, før sessionen afsluttes:
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()
Konditioneret stop kun til interaktiv tilstand
Tjek eksekveringskonteksten før du stopper for at undgå unødvendige kald i pipeline-tilstand:
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")
Tips
Gem altid vigtige resultater – såsom at skrive DataFrames til lagring eller logge output – før du kalder session.stop() eller session.restartPython(). Begge operationer kasserer al hukommelsestilstand.