Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Use notebookutils.session para administrar el ciclo de vida de las sesiones de cuadernos en Microsoft Fabric. Puede detener una sesión interactiva o reiniciar el intérprete de Python para la limpieza, la administración de recursos y la recuperación de errores.
En la tabla siguiente se enumeran los métodos de administración de sesiones disponibles:
| Método | Signature | Descripción |
|---|---|---|
stop |
stop(): void |
Detiene la sesión interactiva actual de forma asincrónica y libera los recursos. Los cuadernos de PySpark, Scala y R aceptan un parámetro opcional detach. |
restartPython |
restartPython(): void |
Reinicia el intérprete de Python mientras mantiene intacto el contexto de Spark. Solo está disponible en cuadernos de Python y PySpark. |
Nota:
El stop() método está disponible en cuadernos de Python, PySpark, Scala y R. En cuadernos de PySpark, Scala y R, stop() acepta un parámetro opcional detach : stop(detach=True). Cuando detach es True (valor predeterminado), la sesión se separa de una sesión de alta concurrencia en lugar de detenerla completamente.
Nota:
El restartPython() método solo está disponible en cuadernos de Python y PySpark. No está disponible en cuadernos de Scala o R.
Importante
En el modo de ejecución en canalización, las sesiones se detienen automáticamente tras completarse el código. La session.stop() API está pensada principalmente para sesiones interactivas en las que desea detener la sesión mediante programación en lugar de hacer clic en el botón detener.
Nota:
El stop() método funciona de forma asincrónica en segundo plano y libera los recursos de sesión de Spark para que estén disponibles para otras sesiones del mismo grupo.
Detener una sesión interactiva
En lugar de seleccionar manualmente el botón detener, puede detener una sesión interactiva llamando a una API en el código.
La notebookutils.session.stop() API detiene la sesión interactiva actual de forma asincrónica en segundo plano. También detiene la sesión de Spark y libera los recursos ocupados por la sesión, por lo que están disponibles para otras sesiones del mismo grupo.
Nota:
El código después de session.stop() no se ejecuta. Todos los datos y variables en memoria se pierden después de que se detenga la sesión. Guarde datos importantes antes de llamar a session.stop().
Comportamiento de retorno
El stop() método no devuelve un valor. Inicia un apagado asincrónico de la sesión.
Reinicio del intérprete de Python
Use notebookutils.session.restartPython() para reiniciar el intérprete de Python.
Nota:
En los cuadernos de PySpark (Spark), restartPython() reinicia solo el intérprete de Python mientras mantiene intacto el contexto de Spark. En los cuadernos de Python, que no tienen un contexto de Spark, restartPython() reinicia todo el proceso de Python.
notebookutils.session.restartPython()
Comportamiento de retorno
El restartPython() método no devuelve un valor. Una vez completado el reinicio, la ejecución del código continúa en la celda siguiente.
Tenga en cuenta las consideraciones siguientes:
- En el caso de ejecución de referencia del cuaderno,
restartPython()solo reinicia el intérprete de Python del cuaderno actual al que se hace referencia. No afecta al bloc de notas principal. - En raras ocasiones, es posible que se produzca un error en el comando debido al mecanismo de reflexión de Spark. Agregar un reintento puede mitigar el problema.
- Después de llamar a
restartPython(), la ejecución de código continúa en la celda siguiente. Importe los paquetes recién instalados en una celda posterior.
Patrones de uso
Limpieza correcta antes de detener
Use un try-finally bloque para asegurarse de que la limpieza se ejecuta antes de que se detenga la sesión:
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()
Instalación de paquetes y reinicio del intérprete
Después de instalar nuevos paquetes con pip, reinicie el intérprete de Python para que los paquetes estén disponibles:
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()
Nota:
Después de llamar a restartPython(), la ejecución de código continúa en la celda siguiente. Importe los paquetes recién instalados en una celda posterior.
Recuperación de errores con reinicio del intérprete
Si el intérprete de Python alcanza un estado dañado, puede intentar la recuperación reiniciando:
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")
Limpieza de recursos antes de detenerse
Limpie las rutas de acceso montadas, los archivos temporales y las memorias caché antes de finalizar la sesión:
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()
Parada condicional solo para el modo interactivo
Compruebe el contexto de ejecución antes de detener para evitar llamadas innecesarias en modo de canalización:
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")
Sugerencia
Guarde siempre resultados importantes( por ejemplo, escribir tramas de datos en el almacenamiento o la salida de registro) antes de llamar a session.stop() o session.restartPython(). Ambas operaciones eliminan todo el estado almacenado en memoria.