Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Använd notebookutils.session för att hantera livscykeln för notebook-sessioner i Microsoft Fabric. Du kan stoppa en interaktiv session eller starta om Python-tolken för rensning, resurshantering och felåterställning.
I följande tabell visas de tillgängliga metoderna för sessionshantering:
| Metod | Signature | Beskrivning |
|---|---|---|
stop |
stop(): void |
Stoppar den aktuella interaktiva sessionen asynkront och släpper resurser. I Notebook-filer för PySpark, Scala och R accepteras en valfri detach parameter. |
restartPython |
restartPython(): void |
Startar om Python-tolken samtidigt som Spark-kontexten hålls intakt. Endast tillgängligt i Python- och PySpark-notebooks. |
Anmärkning
Metoden stop() är tillgänglig i Python-, PySpark-, Scala- och R-notebooks. I PySpark-, Scala- och R-notebooks accepterar stop() en valfri detach-parameter: stop(detach=True). När detach är True (standard) kopplas sessionen från en session med hög parallellitet istället för att helt och hållet stoppa sessionen.
Anmärkning
Metoden restartPython() är endast tillgänglig i Python- och PySpark-notebook-filer. Den är inte tillgänglig i Scala- eller R-anteckningsböcker.
Viktigt!
I pipelinekörningsläge stoppas sessioner automatiskt när koden har slutförts. API:et session.stop() är främst avsett för interaktiva sessioner där du vill stoppa sessionen programmatiskt i stället för att klicka på stoppknappen.
Anmärkning
Metoden stop() fungerar asynkront i bakgrunden och släpper Spark-sessionsresurser så att de blir tillgängliga för andra sessioner i samma pool.
Avbryt en interaktiv session
I stället för att manuellt välja stoppknappen kan du stoppa en interaktiv session genom att anropa ett API i koden.
API:et notebookutils.session.stop() stoppar den aktuella interaktiva sessionen asynkront i bakgrunden. Den stoppar även Spark-sessionen och frigör resurser som används av sessionen, så att de är tillgängliga för andra sessioner i samma pool.
Anmärkning
Koden efter session.stop() körs inte. Alla minnesinterna data och variabler går förlorade när sessionen stoppas. Spara viktiga data innan du anropar session.stop().
Returbeteende
Metoden stop() returnerar inte något värde. Den initierar en asynkron avstängning av sessionen.
Starta om Python-tolken
Använd notebookutils.session.restartPython() för att starta om Python-tolken.
Anmärkning
I PySpark (Spark) notebook-filer restartPython() startar om endast Python-tolken medan Spark context hålls intakt. I Python-notebook-filer, som inte har någon Spark-kontext, restartPython() startas hela Python-processen om.
notebookutils.session.restartPython()
Returbeteende
Metoden restartPython() returnerar inte något värde. När omstarten är klar fortsätter kodkörningen i nästa cell.
Tänk på följande:
- Vid notebook-referenskörningsfallet
restartPython()startar bara om Python-tolken för den aktuella notebook-fil som det refereras till. Det påverkar inte den överordnade notebook-filen. - I sällsynta fall kan kommandot misslyckas på grund av Spark-reflektionsmekanismen. Om du lägger till ett nytt försök kan du undvika problemet.
- Efter att ha anropat
restartPython()fortsätter kodkörningen i nästa cell. Importera nyligen installerade paket i en efterföljande cell.
Användningsmönster
Graciös rensning innan du stoppar
Använd ett try-finally block för att säkerställa att rensningen körs innan sessionen stoppas:
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()
Installera paket och starta om tolken
När du har installerat nya paket med pipstartar du om Python-tolken så att paketen är tillgängliga:
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()
Anmärkning
Efter att ha anropat restartPython() fortsätter kodkörningen i nästa cell. Importera de nyligen installerade paketen i en efterföljande cell.
Felåterställning vid omstart av tolk
Om Python-tolken når ett skadat tillstånd kan du försöka återställa genom att starta om 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")
Resursrensning innan du stoppar
Rensa monterade sökvägar, temporära filer och cacheminnen innan sessionen avslutas:
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()
Villkorsstyrd stopp endast för interaktivt läge
Kontrollera körningskontexten innan du stoppar för att undvika onödiga anrop i pipelineläge:
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/Råd
Spara alltid viktiga resultat , till exempel att skriva DataFrames till lagring eller logga utdata innan du anropar session.stop() eller session.restartPython(). Båda åtgärderna tar bort allt minnesinternt tillstånd.