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.

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?

¿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.