Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik notebookutils.session om de levenscyclus van notebooksessies in Microsoft Fabric te beheren. U kunt een interactieve sessie stoppen of de Python-interpreter opnieuw starten voor opschonen, resourcebeheer en foutherstel.
De volgende tabel bevat de beschikbare sessiebeheermethoden:
| Methode | Signature | Beschrijving |
|---|---|---|
stop |
stop(): void |
Stopt de huidige interactieve sessie asynchroon en publiceert resources. In PySpark, Scala en R notebooks wordt een optionele detach parameter geaccepteerd. |
restartPython |
restartPython(): void |
Start de Python-interpreter opnieuw op terwijl de Spark-context intact blijft. Alleen beschikbaar in Python- en PySpark-notebooks. |
Opmerking
De stop() methode is beschikbaar in Python-, PySpark-, Scala- en R-notebooks. In PySpark-, Scala- en R-notebooks accepteert stop() een optionele detach-parameter: stop(detach=True). Wanneer detach is True (de standaardinstelling), wordt de sessie losgekoppeld van een sessie met hoge gelijktijdigheid in plaats van dat deze volledig wordt gestopt.
Opmerking
De restartPython() methode is alleen beschikbaar in Python- en PySpark-notebooks. Deze is niet beschikbaar in Scala- of R-notebooks.
Belangrijk
In de uitvoeringsmodus voor pijplijn worden sessies automatisch gestopt nadat de code is voltooid. De session.stop() API is voornamelijk bedoeld voor interactieve sessies waar u de sessie programmatisch wilt stoppen in plaats van op de stopknop te klikken.
Opmerking
De stop() methode werkt asynchroon op de achtergrond en publiceert Spark-sessieresources, zodat ze beschikbaar worden voor andere sessies in dezelfde pool.
Een interactieve sessie stoppen
In plaats van handmatig de stopknop te selecteren, kunt u een interactieve sessie stoppen door een API aan te roepen in uw code.
De notebookutils.session.stop() API stopt de huidige interactieve sessie asynchroon op de achtergrond. Ook wordt de Spark-sessie gestopt en worden de resources die door de sessie worden bezet vrijgegeven, waardoor deze beschikbaar zijn voor andere sessies in dezelfde pool.
Opmerking
Code na session.stop() wordt niet uitgevoerd. Alle in-memory gegevens en variabelen gaan verloren nadat de sessie is gestopt. Sla belangrijke gegevens op voordat u belt session.stop().
Retourgedrag
De stop() methode retourneert geen waarde. De sessie wordt asynchroon afgesloten.
De Python-interpreter opnieuw starten
Gebruik notebookutils.session.restartPython() dit om de Python-interpreter opnieuw op te starten.
Opmerking
In de PySpark-notebooks restartPython() wordt alleen de Python-interpreter opnieuw opgestart terwijl de Spark-context intact blijft. In Python-notebooks, die geen Spark-context hebben, restartPython() wordt het hele Python-proces opnieuw gestart.
notebookutils.session.restartPython()
Retourgedrag
De restartPython() methode retourneert geen waarde. Nadat het opnieuw opstarten is voltooid, gaat de uitvoering van de code verder in de volgende cel.
Houd rekening met deze overwegingen:
- In het geval van de notebookreferentie-uitvoering
restartPython()wordt alleen de Python-interpreter opnieuw gestart van het notebook dat momenteel wordt gerefereerd. Dit heeft geen invloed op het oudernotitieblok. - In zeldzame gevallen kan de opdracht mislukken vanwege het Spark-reflectiemechanisme. Door een nieuwe poging toe te voegen, kan het probleem worden verholpen.
- Na het aanroepen
restartPython()wordt de code-uitvoering voortgezet in de volgende cel. Importeer zojuist geïnstalleerde pakketten in een volgende cel.
Gebruikspatronen
Ordelijk opschonen voordat je stopt
Gebruik een try-finally blok om ervoor te zorgen dat opschoning wordt uitgevoerd voordat de sessie stopt:
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()
Pakketten installeren en de interpreter opnieuw starten
Nadat u nieuwe pakketten hebt geïnstalleerd, pipstart u de Python-interpreter opnieuw zodat de pakketten beschikbaar zijn:
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()
Opmerking
Na het aanroepen restartPython()wordt de code-uitvoering voortgezet in de volgende cel. Importeer de zojuist geïnstalleerde pakketten in een volgende cel.
Foutherstel met het opnieuw opstarten van de interpreter
Als de Python-interpreter een beschadigde status bereikt, kunt u proberen te herstellen door deze opnieuw te starten:
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")
Opschonen van bronnen voordat stoppen
Verwijder gekoppelde paden, tijdelijke bestanden en caches voordat u de sessie beëindigt:
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()
Voorwaardelijke stop alleen voor interactieve modus
Controleer de uitvoeringscontext voordat u stopt om onnodige aanroepen in de pijplijnmodus te voorkomen:
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")
Aanbeveling
Sla altijd belangrijke resultaten op, zoals het opslaan van DataFrames of logboekuitvoer, voordat u session.stop() of session.restartPython() aanroept. Beide bewerkingen verwijderen alle toestand in het geheugen.