Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Käytä notebookutils.session muistikirjan istuntojen elinkaaren hallintaan Microsoft Fabricissa. Voit keskeyttää interaktiivisen istunnon tai käynnistää Python-tulkin uudelleen siivousta, resurssien hallintaa ja virheiden korjausta varten.
Seuraava taulukko listaa käytettävissä olevat istunnonhallintamenetelmät:
| Menetelmä | Allekirjoitus | Description |
|---|---|---|
stop |
stop(): void |
Pysäyttää nykyisen interaktiivisen istunnon asynkronisesti ja vapauttaa resursseja. PySpark-, Scala- ja R-muistikirjoissa hyväksytään valinnainen detach parametri. |
restartPython |
restartPython(): void |
Käynnistän Python-tulkin uudelleen säilyttäen Spark-kontekstin ennallaan. Saatavilla vain Python- ja PySpark-muistikirjoissa. |
Muistio
Menetelmä stop() on saatavilla Python-, PySpark-, Scala- ja R-muistikirjoissa. PySpark-, Scala- ja R-muistikirjoissa stop() hyväksytään valinnainen detach parametri: stop(detach=True). Kun detach on True (oletus), istunto irtautuu korkean samanaikaisuuden istunnosta sen sijaan, että se pysäytelisi kokonaan.
Muistio
Menetelmä restartPython() on saatavilla vain Python- ja PySpark-muistikirjoissa. Sitä ei ole saatavilla Scala- tai R-muistikirjoissa.
Tärkeää
Putkiston suoritustilassa istunnot pysähtyvät automaattisesti koodin valmistuttua. API session.stop() on ensisijaisesti tarkoitettu interaktiivisiin sessioihin, joissa haluat pysäyttää istunnon ohjelmallisesti sen sijaan, että klikkaisit pysäytyspainiketta.
Muistio
Metodi stop() toimii taustalla asynkronisesti ja vapauttaa Spark-istuntoresursseja, jotta ne tulevat saataville myös muille saman poolin sessioille.
Vuorovaikutteisen istunnon lopettaminen
Sen sijaan, että valitsisit pysäytyspainikkeen manuaalisesti, voit pysäyttää interaktiivisen istunnon kutsumalla API:n koodissasi.
API notebookutils.session.stop() pysäyttää nykyisen interaktiivisen istunnon asynkronisesti taustalla. Se myös pysäyttää Spark-istunnon ja vapauttaa resursseja, jotka istunto vie, joten ne ovat käytettävissä myös muille sessioille samassa poolissa.
Muistio
Seuraava session.stop() koodi ei käynnisty. Kaikki muistissa olevat tiedot ja muuttujat katoavat istunnon päättyessä. Tallenna tärkeät tiedot ennen kuin soitat session.stop().
Palautuskäyttäytyminen
Menetelmä stop() ei anna arvoa. Se käynnistää istunnon asynkronisen pysäytyksen.
Käynnistä Python-tulkki uudelleen
Käytä notebookutils.session.restartPython() Python-tulkin uudelleenkäynnistykseen.
Muistio
PySpark (Spark) -muistikirjoissa restartPython() käynnistää uudelleen vain Python-tulkki säilyttäen Spark-kontekstin ennallaan. Python-muistikirjat, joissa ei ole Spark-kontekstia, restartPython() käynnistävät koko Python-prosessin uudelleen.
notebookutils.session.restartPython()
Palautuskäyttäytyminen
Menetelmä restartPython() ei anna arvoa. Uudelleenkäynnistyksen jälkeen koodin suoritus jatkuu seuraavassa solussa.
Pidä nämä seikat mielessä:
- Muistikirjan viitesuorituksessa
restartPython()käynnistää uudelleen vain nykyisen viitatun muistikirjan Python-tulkin. Se ei vaikuta vanhemman muistikirjaan. - Harvinaisissa tapauksissa komento voi epäonnistua Spark-heijastusmekanismin vuoksi. Uudelleenyrityksen lisääminen voi lieventää ongelmaa.
- Kutsumisen
restartPython()jälkeen koodin suoritus jatkuu seuraavassa solussa. Tuo uudet paketit seuraavaan soluun.
Käyttötavat
Sulava siivous ennen pysähtymistä
Käytä lohkoa try-finally varmistaaksesi, että siivous käynnistyy ennen istunnon loppumista:
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()
Asenna paketit ja käynnistä tulkki uudelleen
Kun asennat uudet paketit , pipkäynnistä Python-tulkki uudelleen, jotta paketit ovat saatavilla:
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()
Muistio
Kutsumisen restartPython()jälkeen koodin suoritus jatkuu seuraavassa solussa. Tuo uudet paketit seuraavaan soluun.
Virheenkorjaus tulkin uudelleenkäynnistyksellä
Jos Python-tulkki saavuttaa vioittuneen tilan, voit yrittää palautusta käynnistämällä sen uudelleen:
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")
Resurssien siivous ennen lopettamista
Siivoa liitetyt polut, väliaikaiset tiedostot ja välimuistit ennen istunnon lopettamista:
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()
Ehdollinen pysäytys vain interaktiiviselle tilalle
Tarkista suorituskonteksti ennen pysähtymistä, jotta välttää tarpeettomia kutsuja putkistotilassa:
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")
Vinkki
Tallenna aina tärkeät tulokset—kuten DataFramejen kirjoittaminen tallennustilaan tai tulostuksen kirjaaminen—ennen kuin kutsut session.stop() tai session.restartPython(). Molemmat toiminnot hylkäävät kaiken muistitilan.