Del via


NotebookUtils sessionsstyring for Fabric

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.

notebookutils.session.stop()

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.