Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Brukes notebookutils.session til å administrere livssyklusen til notatbokøkter i Microsoft Fabric. Du kan stoppe en interaktiv økt eller starte Python-tolken på nytt for opprydding, ressursstyring og feilgjenoppretting.
Følgende tabell viser tilgjengelige metoder for sesjonshåndtering:
| Metode | Signatur | Beskrivelse |
|---|---|---|
stop |
stop(): void |
Stopper den nåværende interaktive økten asynkront og frigjør ressurser. I PySpark-, Scala- og R-notatbøker godtar en valgfri detach parameter. |
restartPython |
restartPython(): void |
Starter Python-tolken på nytt samtidig som Spark-konteksten beholdes. Tilgjengelig kun i Python- og PySpark-notatbøker. |
Bemerkning
Metoden stop() er tilgjengelig i Python, PySpark, Scala og R-notatbøker. I PySpark-, Scala- og R-notatbøker godtar stop() en valgfri detach parameter: stop(detach=True). Når detach er True (standard), løsriver sesjonen seg fra en høy-samtidig-økt i stedet for å stoppe den helt.
Bemerkning
Metoden restartPython() er kun tilgjengelig i Python- og PySpark-notatbøker. Den er ikke tilgjengelig i Scala eller R-notatbøker.
Viktig!
I pipeline-kjøringsmodus stopper øktene automatisk etter at koden er fullført. API-et session.stop() er primært ment for interaktive økter hvor du vil stoppe økten programmessig i stedet for å klikke på stoppknappen.
Bemerkning
Metoden stop() opererer asynkront i bakgrunnen og frigjør Spark-sesjonsressurser slik at de blir tilgjengelige for andre økter i samme pool.
Stoppe en interaktiv økt
I stedet for å manuelt velge stoppknappen, kan du stoppe en interaktiv økt ved å kalle et API i koden din.
API-et notebookutils.session.stop() stopper den nåværende interaktive økten asynkront i bakgrunnen. Det stopper også Spark-økten og frigjør ressurser som er opptatt av økten, slik at de er tilgjengelige for andre økter i samme pool.
Bemerkning
Koden etter session.stop() kjører ikke. All data og variabler i minnet går tapt etter at økten avsluttes. Lagre viktig informasjon før du ringer session.stop().
Returatferd
Metoden stop() returnerer ikke en verdi. Den initierer en asynkron nedstengning av økten.
Start Python-tolken på nytt
Bruk notebookutils.session.restartPython() den for å starte Python-tolken på nytt.
Bemerkning
I PySpark (Spark) notatbøker restartPython() starter kun Python-tolken på nytt samtidig som Spark-konteksten beholdes. I Python-notatbøker, som ikke har Spark-kontekst, restartPython() starter hele Python-prosessen på nytt.
notebookutils.session.restartPython()
Returatferd
Metoden restartPython() returnerer ikke en verdi. Etter at omstarten er fullført, fortsetter kodeutførelsen i neste celle.
Husk disse hensynene:
- I tilfellet med notebook reference run,
restartPython()starter bare Python-tolken av den nåværende notatboken som refereres til, på nytt. Det påvirker ikke hovednotatboken. - I sjeldne tilfeller kan kommandoen feile på grunn av Spark-refleksjonsmekanismen. Å legge til et nytt forsøk kan dempe problemet.
- Etter å ha kalt
restartPython(), fortsetter kodeutførelsen i neste celle. Importer nylig installerte pakker i en påfølgende celle.
Bruksmønstre
Elegant opprydding før du stopper
Bruk en try-finally blokk for å sikre at oppryddingen skjer før økten 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 start tolken på nytt
Etter å ha installert nye pakker med pip, start Python-tolken på nytt slik at pakkene er tilgjengelige:
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()
Bemerkning
Etter å ha kalt restartPython(), fortsetter kodeutførelsen i neste celle. Importer de nylig installerte pakkene i en påfølgende celle.
Feilgjenoppretting med tolkeomstart
Hvis Python-tolken når en korrupt tilstand, kan du forsøke gjenoppretting ved å starte den på nytt:
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")
Opprydding av ressurser før slutt
Rydd opp i monterte stier, midlertidige filer og cacher før du avslutter økten:
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()
Betinget stopp kun for interaktiv modus
Sjekk kjøringskonteksten før du stopper for å unngå unødvendige kall i pipeline-modus:
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
Lagre alltid viktige resultater – som å skrive DataFrames til lagring eller logge utdata – før du kaller session.stop() eller session.restartPython(). Begge operasjonene forkaster all minnetilstand.