Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use notebookutils.session para gerenciar o ciclo de vida das sessões de notebook no Microsoft Fabric. Você pode interromper uma sessão interativa ou reiniciar o interpretador do Python para limpeza, gerenciamento de recursos e recuperação de erros.
A tabela a seguir lista os métodos de gerenciamento de sessão disponíveis:
| Método | Signature | Descrição |
|---|---|---|
stop |
stop(): void |
Interrompe a sessão interativa atual de forma assíncrona e libera recursos. Nos notebooks PySpark, Scala e R, aceita um parâmetro opcional detach . |
restartPython |
restartPython(): void |
Reinicia o interpretador do Python mantendo o contexto do Spark intacto. Disponível somente em notebooks Python e PySpark. |
Observação
O stop() método encontra-se disponível em notebooks Python, PySpark, Scala e R. Nos notebooks PySpark, Scala e R, stop() aceita um parâmetro opcional detach : stop(detach=True). Quando detach é True (o padrão), a sessão se desanexa de uma sessão de alta concorrência em vez de pará-la inteiramente.
Observação
O método restartPython() está disponível apenas em notebooks Python e PySpark. Ele não está disponível em notebooks Scala ou R.
Importante
No modo de execução do 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 em que você deseja interromper a sessão programaticamente em vez de clicar no botão parar.
Observação
O stop() método opera de forma assíncrona em segundo plano e libera recursos de sessão do Spark para que eles fiquem disponíveis para outras sessões no mesmo pool.
Parar uma sessão interativa
Em vez de selecionar manualmente o botão parar, você pode interromper uma sessão interativa chamando uma API em seu código.
A notebookutils.session.stop() API interrompe a sessão interativa atual de forma assíncrona em segundo plano. Ele também interrompe a sessão do Spark e libera os recursos ocupados pela sessão, portanto, eles estão 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 na memória são perdidos depois que a sessão é interrompida. Salve dados importantes antes de chamar session.stop().
Comportamento de retorno
O stop() método não retorna um valor. Ele inicia um desligamento assíncrono da sessão.
Reiniciar o interpretador do Python
Use notebookutils.session.restartPython() para reiniciar o interpretador do Python.
Observação
Em cadernos do PySpark (Spark), restartPython() reinicia apenas o interpretador do Python, mantendo o contexto Spark intacto. Em notebooks Python, que não têm um contexto spark, restartPython() reinicia todo o processo do Python.
notebookutils.session.restartPython()
Comportamento de retorno
O restartPython() método não retorna um valor. Após a conclusão da reinicialização, a execução do código continuará na próxima célula.
Lembre-se do seguinte:
- No caso de execução referenciada de notebook,
restartPython()reinicia apenas o interpretador Python do notebook atual que está sendo referenciado. Ele não afeta o bloco de anotações pai. - Em casos raros, o comando pode falhar devido ao mecanismo de reflexão do Spark. Adicionar uma repetição pode atenuar o problema.
- Após a chamada
restartPython(), a execução de código continua na próxima célula. Importe pacotes recém-instalados em uma célula subsequente.
Padrões de uso
Limpeza suave antes de parar
Use um try-finally bloco para garantir que a limpeza seja executada antes que a sessão pare:
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()
Instalar pacotes e reiniciar o interpretador
Depois de instalar novos pacotes com pip, reinicie o interpretador do Python para que os pacotes estejam 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 a chamada restartPython(), a execução de código continua na próxima célula. Importe os pacotes recém-instalados em uma célula subsequente.
Recuperação de erro com reinicialização do interpretador
Se o interpretador do Python atingir um estado corrompido, você poderá 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, arquivos temporários e caches antes de encerrar 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()
Parada condicional somente para modo interativo
Verifique o contexto de execução antes de parar para evitar chamadas desnecessárias no modo de 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")
Dica
Sempre salve resultados importantes, como gravar DataFrames no armazenamento ou na saída de log, antes de chamar session.stop() ou session.restartPython(). Ambas as operações descartam todo o estado em memória.