Soporte para una biblioteca interrumpible
Visión general
Aspose.Slides proporciona un mecanismo de procesamiento interrumpible para tareas de presentación de larga duración, como deserialización, serialización y renderizado. Este mecanismo se basa en las clases InterruptionToken y InterruptionTokenSource.
Un InterruptionToken puede asignarse a LoadOptions y pasarse al constructor de Presentation. Cuando se llama a InterruptionTokenSource.interrupt, la tarea de larga duración asociada se interrumpe.
Biblioteca interrumpible
Aspose.Slides para Python a través de Java proporciona las clases InterruptionToken y InterruptionTokenSource. Permiten interrumpir tareas de larga duración como deserialización, serialización y renderizado.
- InterruptionTokenSource es la fuente del (de los) token(s) que se pasa(n) a LoadOptions.setInterruptionToken.
- Cuando se llama a LoadOptions.setInterruptionToken y la instancia de LoadOptions se pasa al constructor de Presentation, invocar InterruptionTokenSource.interrupt interrumpe cualquier tarea de larga duración asociada a ese Presentation.
El siguiente fragmento de código muestra cómo interrumpir una tarea en ejecución:
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) # Ejecuta la acción en un hilo separado.
time.sleep(10) # Tiempo de espera.
token_source.interrupt() # Detener la conversión.
conversion_task.result()
Preguntas frecuentes
¿Cuál es el propósito de la biblioteca de interrupción de Aspose.Slides?
Proporciona un mecanismo para interrumpir operaciones de larga duración —como cargar, guardar o renderizar presentaciones— antes de que finalicen. Esto es útil cuando el tiempo de procesamiento debe limitarse o la tarea ya no es necesaria.
¿Cuál es la diferencia entre InterruptionToken y InterruptionTokenSource?
- InterruptionToken se pasa a la API de Aspose.Slides y se verifica durante las operaciones de larga duración.
- InterruptionTokenSource se utiliza en el código para crear tokens y desencadenar interrupciones llamando a interrupt.
¿Qué tareas pueden interrumpirse?
Cualquier tarea de Aspose.Slides que acepte un InterruptionToken, como cargar una presentación con Presentation o guardar con Presentation.save, puede interrumpirse.
¿La interrupción ocurre de inmediato?
No. La interrupción es cooperativa: la operación comprueba periódicamente el token y se detiene tan pronto como detecta que se ha llamado a interrupt.
¿Qué ocurre si llamo a interrupt después de que una tarea ya haya finalizado?
Nada: la llamada no tiene efecto si la tarea correspondiente ya ha concluido.
¿Puedo reutilizar el mismo InterruptionTokenSource para varias tareas?
Sí, pero después de llamar a interrupt en esa fuente, todas las tareas que utilicen sus tokens serán interrumpidas. Use fuentes de tokens separadas para gestionar las tareas de forma independiente.