Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Use notebookutils.session para gerir o ciclo de vida das sessões de notebook no Microsoft Fabric. Pode interromper uma sessão interativa ou reiniciar o interpretador Python para limpeza, gestão de recursos e recuperação de erros.
A tabela seguinte lista os métodos disponíveis de gestão de sessões:
| Método | Signature | Descrição |
|---|---|---|
stop |
stop(): void |
Termina a sessão interativa atual de forma assíncrona e liberta recursos. Nos cadernos PySpark, Scala e R, aceita um parâmetro opcional detach . |
restartPython |
restartPython(): void |
Reinicia o interpretador Python mantendo o contexto do Spark intacto. Disponível apenas em cadernos Python e PySpark. |
Observação
O stop() método está disponível em cadernos Python, PySpark, Scala e R. Nos cadernos PySpark, Scala e R, stop() aceita um parâmetro opcional detach : stop(detach=True). Quando detach é True (o padrão), a sessão desliga-se de uma sessão de alta concorrência em vez de a interromper completamente.
Observação
O restartPython() método está disponível apenas em cadernos Python e PySpark. Não está disponível em cadernos Scala ou R.
Importante
No modo de execução pipeline, as sessões param automaticamente após a conclusão do código. A session.stop() API destina-se principalmente a sessões interativas onde se pretende parar a sessão programaticamente em vez de clicar no botão de parar.
Observação
O stop() método opera de forma assíncrona em segundo plano e liberta os recursos das sessões Spark para que fiquem disponíveis para outras sessões no mesmo pool.
Parar uma sessão interativa
Em vez de selecionar manualmente o botão de parar, pode parar uma sessão interativa chamando uma API no seu código.
A notebookutils.session.stop() API interrompe a sessão interativa atual de forma assíncrona em segundo plano. Também interrompe a sessão do Spark e liberta os recursos ocupados pela sessão, para que estejam disponíveis para outras sessões no mesmo pool.
Observação
O código depois session.stop() não é executado. Todos os dados e variáveis em memória são perdidos após a conclusão da sessão. Guardar dados importantes antes de ligar para session.stop().
Comportamento de retorno
O stop() método não devolve um valor. Inicia um encerramento assíncrono da sessão.
Reinicie o interpretador Python
Uso notebookutils.session.restartPython() para reiniciar o interpretador Python.
Observação
Nos cadernos PySpark (Spark), restartPython() reinicia apenas o interpretador Python mantendo o contexto Spark intacto. Nos cadernos Python, que não têm contexto Spark, restartPython() reinicia todo o processo Python.
notebookutils.session.restartPython()
Comportamento de retorno
O restartPython() método não devolve um valor. Após a conclusão do reinício, a execução do código continua na célula seguinte.
Tenha estas considerações em mente:
- No caso de execução de referência do notebook,
restartPython()só reinicia o interpretador Python do notebook atual que está a ser referenciado. Não afeta o caderno principal. - Em casos raros, o comando pode falhar devido ao mecanismo de reflexão do Spark. Adicionar uma nova tentativa pode mitigar o problema.
- Após chamar
restartPython(), a execução de código continua na célula seguinte. Importa pacotes recém-instalados numa célula subsequente.
Padrões de utilização
Limpeza elegante antes de parar
Use um try-finally bloco para garantir que a limpeza é executada antes da sessão terminar:
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()
Instale pacotes e reinicie o interpretador
Após instalar novos pacotes com pip, reinicie o interpretador Python para que os pacotes fiquem disponíveis:
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()
Observação
Após chamar restartPython(), a execução de código continua na célula seguinte. Importa os pacotes recém-instalados numa célula subsequente.
Recuperação de erros com reinício do interpretador
Se o interpretador Python atingir um estado corrompido, pode tentar a recuperação reiniciando-o:
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")
Limpeza de recursos antes de parar
Limpe caminhos montados, ficheiros temporários e caches antes de terminar a sessão:
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()
Paragem condicional apenas para modo interativo
Verifique o contexto de execução antes de parar para evitar chamadas desnecessárias no modo pipeline:
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")
Sugestão
Guarde sempre resultados importantes — como escrever DataFrames para armazenamento ou registar a saída — antes de chamar session.stop() ou session.restartPython(). Ambas as operações descartam todo o estado em memória.