Suporte a uma Biblioteca Interrompível
Visão geral
Aspose.Slides fornece um mecanismo de processamento interrompível para tarefas de apresentação de longa duração, como desserialização, serialização e renderização. Esse mecanismo baseia‑se nas classes InterruptionToken e InterruptionTokenSource.
Um InterruptionToken pode ser atribuído a LoadOptions e passado ao construtor de Presentation. Quando InterruptionTokenSource.interrupt é chamado, a tarefa de longa duração associada é interrompida.
Biblioteca interrompível
Aspose.Slides for Python via Java fornece as classes InterruptionToken e InterruptionTokenSource. Elas permitem interromper tarefas de longa duração, como desserialização, serialização e renderização.
- InterruptionTokenSource é a origem do(s) token(s) passado(s) para LoadOptions.setInterruptionToken.
- Quando LoadOptions.setInterruptionToken é chamado e a instância de LoadOptions é passada ao construtor de Presentation, invocar InterruptionTokenSource.interrupt interrompe qualquer tarefa de longa duração associada a essa Presentation.
O trecho de código a seguir demonstra como interromper uma tarefa em execução:
from concurrent.futures import ThreadPoolExecutor
import time
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import InterruptionTokenSource, LoadOptions, Presentation, SaveFormat
token_source = InterruptionTokenSource()
def convert_presentation():
load_options = LoadOptions()
load_options.setInterruptionToken(token_source.getToken())
presentation = Presentation("sample.pptx", load_options)
try:
presentation.save("sample.ppt", SaveFormat.Ppt)
finally:
presentation.dispose()
with ThreadPoolExecutor(max_workers=1) as executor:
conversion_task = executor.submit(convert_presentation) # Execute a ação em uma thread separada.
time.sleep(10) # Tempo limite.
token_source.interrupt() # Interrompa a conversão.
conversion_task.result()
Perguntas frequentes
Qual é o objetivo da biblioteca de interrupção do Aspose.Slides?
Ela fornece um mecanismo para interromper operações de longa duração — como carregar, salvar ou renderizar apresentações — antes que sejam concluídas. Isso é útil quando o tempo de processamento deve ser limitado ou a tarefa não é mais necessária.
Qual a diferença entre InterruptionToken e InterruptionTokenSource?
- InterruptionToken é passado para a API do Aspose.Slides e verificado durante operações de longa duração.
- InterruptionTokenSource é usado no seu código para criar tokens e acionar interrupções chamando interrupt.
Quais tarefas podem ser interrompidas?
Qualquer tarefa do Aspose.Slides que aceite um InterruptionToken — como carregar uma apresentação com Presentation ou salvar com Presentation.save — pode ser interrompida.
A interrupção ocorre imediatamente?
Não. A interrupção é cooperativa: a operação verifica periodicamente o token e para assim que detecta que interrupt foi chamado.
O que acontece se eu chamar interrupt depois que a tarefa já foi concluída?
Nada — a chamada não tem efeito se a tarefa correspondente já terminou.
Posso reutilizar o mesmo InterruptionTokenSource para várias tarefas?
Sim — mas depois de chamar interrupt nesse source, todas as tarefas que usam seus tokens serão interrompidas. Use fontes de token separadas para gerenciar as tarefas de forma independente.